home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / vil / vil_demo.bas < prev    next >
Encoding:
BASIC Source File  |  1993-11-30  |  84.3 KB  |  2,054 lines

  1. 100 '--------------------  VIL組み込み開始 --------------------
  2. 110 CLEAR ,,512,1024*700,0,0                      'メモリ領域設定
  3. 120 SCREEN 0:CLS
  4. 130 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0:VIL_W4%=0  '汎用ワーク変数
  5. 140 VIL_W5%=0:VIL_W6%=0:VIL_W7%=0:VIL_W8%=0:VIL_W9%=0
  6. 150 VIL_W0&=0:VIL_W1&=0:VIL_W2&=0:VIL_W3&=0:VIL_W4&=0  '汎用ワーク変数
  7. 160 VIL_W5&=0:VIL_W6&=0:VIL_W7&=0:VIL_W8&=0:VIL_W9&=0
  8. 170 VIL_W0$="":VIL_W1$="":VIL_W2$="":VIL_W3$=""
  9. 180 VIL_I%=0:VIL_J%=0:VIL_K%=0                    'ループ変数
  10. 190 VIL_L%=0                                      '長さ
  11. 200 VIL_A$=""                                     '文字列汎用
  12. 210 VIL_F$=""                                     'ファイル名汎用
  13. 220 VIL_C%=15:VIL_CB%=0                           '描画色・背景色(0..15)
  14. 230 VIL_X%=0:VIL_Y%=0:VIL_W%=0:VIL_Z%=0           '左上隅・右下隅座標
  15. 240 VIL_XL%=0:VIL_YL%=0:VIL_XN%=0:VIL_YN%=0       'X・Y軸方向長さ・個数
  16. 250 VIL_P%=0                                      'パレット番号
  17. 260 VIL_KN%=0                                     '入力番号
  18. 270 VIL_K$="":VIL_KY%=0                           '入力キー,アスキーコード
  19. 280 VIL_MX%=0:VIL_MY%=0:VIL_MW%=0:VIL_MZ%=0       'マウス位置
  20. 290 '
  21. 300 VIL_E%=0                                      'エラー番号
  22. 310 VIL_DIR$=""                                   'VILディレクトリ
  23. 320 VIL_FMTDIR$=""                                'FMTITLEディレクトリ
  24. 330 VIL_VER%=200                                  'VIL VER2.00
  25. 340 '
  26. 350 *VIL_CNF                              '設定ファイル"VIL.CNF"読込
  27. 360 PRINT"Searching "+CHR$(34)+"VIL.CNF"+CHR$(34)
  28. 370 PRINT"Searching current directory"
  29. 380 GOSUB *VIL_ERR_ON:VIL_E%=0
  30. 390 OPEN "I",#1,"VIL.CNF"                 'カレントディレクトリを探す
  31. 400 IF VIL_E%=63 THEN
  32. 410   PRINT"Searching root directory"
  33. 420   VIL_E%=0
  34. 430   OPEN "I",#1,"\VIL.CNF"              'ルートディレクトリを探す
  35. 440   IF VIL_E%=63 THEN                    '見つからなければ設定中止
  36. 450     PRINT"WARNING:"+CHR$(34)+"VIL.CNF"+CHR$(34)+" not found"
  37. 460     GOTO *VIL_L_BGN
  38. 470   ENDIF
  39. 480 ENDIF
  40. 490 PRINT"Reading "+CHR$(34)+"VIL.CNF"+CHR$(34)
  41. 500 WHILE EOF(1)=0
  42. 510   LINE INPUT #1,VIL_W0$
  43. 520   IF LEFT$(VIL_W0$,1)<>"'" THEN              'コメント行スキップ
  44. 530     IF INSTR(VIL_W0$,"VILDIR") THEN          'VILディレクトリ設定
  45. 540       VIL_DIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1)
  46. 550     ELSE IF INSTR(VIL_W0$,"FMTITLEDIR") THEN 'FMTITLEディレクトリ設定
  47. 560       VIL_FMTDIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1)
  48. 570     ENDIF
  49. 580   ENDIF
  50. 590 WEND
  51. 600 CLOSE #1
  52. 610 '
  53. 620 *VIL_L_BGN                                ' VIL リンク開始
  54. 630 ON ERROR GOTO 0
  55. 670 *VIL_L_END                                ' VIL リンク終了
  56. 680 '
  57. 690 GOSUB *VIL_ERR_ON
  58. 700 GOSUB *VIL_DEFFN:GOTO *VIL_INITEND
  59. 710 '
  60. 720 *VIL_ERR_ON:ON ERROR GOTO *VIL_ERR:RETURN
  61. 730 *VIL_ERR:VIL_E%=ERR:RESUME NEXT
  62. 740 '
  63. 750 *VIL_DEFFN
  64. 760 '  S$:文字列に変換 SS$:左にスペースを詰める S0$:左に0を詰める
  65. 770 '  P :正の整数     I  :整数                 R  :実数
  66. 780 DEF FNVIL_P2S$(X&)       =MID$(STR$(X&),2)
  67. 790 DEF FNVIL_P2SS$(X&,Y%)   =RIGHT$("          "+STR$(X&),Y%)
  68. 800 DEF FNVIL_P2S0$(X&,Y%)   =RIGHT$("0000000000"+MID$(STR$(X&),2),Y%)
  69. 810 DEF FNVIL_I2S$(X&)       =MID$(STR$(X&),1-(X&>=0))
  70. 820 DEF FNVIL_I2SS$(X&,Y%)   =RIGHT$("          "+STR$(X&),Y%)
  71. 830 '符号1桁(+-) + 00… + 数値
  72. 840 DEF FNVIL_I2S0$(X&,Y%)   =MID$("+-",1-(X&<0),1)                                                       +RIGHT$("0000000000"+MID$(STR$(ABS(X&)),2)                                          ,Y%-1)
  73. 850 DEF FNVIL_R2S$(X#)       =MID$(STR$(X#),1-(X#>=0))
  74. 860 DEF FNVIL_R2SS$(X#,Y%,Z%)=RIGHT$("          "+STR$(FIX(X#)),Y%)+"."                                   +MID$("0000000000"+STR$(X#)+"0000000000"                                          ,INSTR("0000000000"+STR$(X#),".")+1,Z%)
  75. 870 DEF FNVIL_R2S0$(X#,Y%,Z%)=MID$("+-",1-(X#<0),1)+RIGHT$("0000000000"              +MID$(STR$(FIX(ABS(X#))),2),Y%-1)+MID$("0000000000"+STR$(X#)                 +"0000000000",INSTR("0000000000"+STR$(X#),".")+1,Z%)
  76. 880 RETURN
  77. 890 '
  78. 900 *VIL_INITEND
  79. 910 '--------------------  VIL組み込み終了 --------------------
  80. 10000 '<<<<<<<<<<<<<<<  Visual Interface Library Demo  >>>>>>>>>>>>>>>
  81. 10010 '
  82. 10020 RANDOMIZE TIME:DEFINT A-Z
  83. 10030 '
  84. 10040 SCREEN 1,0,1,0:VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
  85. 10050 PALETTE@:CLS
  86. 10060 PLAY OFF
  87. 10070 '
  88. 10080 '起動画面
  89. 10090 '
  90. 10100 LINE(160,160)-(479,319),PSET,7,BF
  91. 10110 SYMBOL(224,168),"VIL",4,4,4
  92. 10120 SYMBOL(224,260),"Visual Interface Library",1,1,0
  93. 10130 SYMBOL(224,280)," Demonstration  Program ",1,1,0
  94. 10140 '
  95. 10150 SCREEN 1,1,1,0
  96. 10160 SCREEN @1
  97. 10170 LOAD@"S_SHIP2.TIF"
  98. 10180 '
  99. 10190 SCREEN 1,0,1,0
  100. 10200 CLS
  101. 10210 '
  102. 10220 '<<<<<<<<<<<<<<<<<<<<  VIL INITIALIZE  >>>>>>>>>>>>>>>>>>>>
  103. 10230 '
  104. 10240 GOSUB *VIL_BEEP_INITM
  105. 10250 '
  106. 10260 VIL_W0&=1024*500\2             '画面退避(最大ウィンドウ総面積)
  107. 10270 VIL_W1%=20                     '最大ウィンドウ番号
  108. 10280 GOSUB *VIL_WIN_INITM
  109. 10290 '
  110. 10300 VIL_W0%=110                    '最大メニュー番号
  111. 10310 VIL_W1%=256                    '最大ボックス数
  112. 10320 GOSUB *VIL_MSEL_INITM
  113. 10330 GOSUB *VIL_INP_INITM
  114. 10340 '
  115. 10350 VIL_W0%=110                   '最大ウィンドウ通し番号
  116. 10360 VIL_W1%=128                   'ウィンドウ枠色初期設定  (G)
  117. 10370 VIL_W2%=128                   '                        (R)
  118. 10380 VIL_W3%=128                   '                        (B)
  119. 10390 VIL_W4%=  8                   'ウィンドウ背景色用パレット番号
  120. 10400 VIL_W5%=  0                   'ウィンドウ背景色初期設定(G)
  121. 10410 VIL_W6%=  0                   '                        (R)
  122. 10420 VIL_W7%=  0                   '                        (B)
  123. 10430 GOSUB *VIL_VWM_INITM
  124. 10440 GOSUB *VIL_SEL_INITM
  125. 10450 '
  126. 10460 VIL_W0%=160:VIL_W1%=80
  127. 10470 GOSUB *VIL_SYSCNF_INITM
  128. 10480 '
  129. 10490 VIL_W0%=160+32:VIL_W1%=80+32  '色設定ウィンドウ左上隅座標
  130. 10500 VIL_W2%=160+64:VIL_W3%=80+64  'パレット設定ウィンドウ左上隅座標
  131. 10510 VIL_W4%=-1                    '表示輝度(高輝度)
  132. 10520 VIL_W5%=128                   'ウィンドウ枠色初期設定  (G)
  133. 10530 VIL_W6%=128                   'ウィンドウ枠色初期設定  (R)
  134. 10540 VIL_W7%=128                   'ウィンドウ枠色初期設定  (B)
  135. 10550 GOSUB *VIL_COLCNF_INITM
  136. 10560 '
  137. 10570 VIL_W0%=160+32:VIL_W1%=80+32  'BGM設定ウィンドウ左上隅座標
  138. 10580 GOSUB *VIL_BGM_INITM
  139. 10590 '
  140. 10600 VIL_W0%=160+64:VIL_W1%=80+64  'BGM-FMウィンドウ左上隅座標
  141. 10610 VIL_W2%=160+96:VIL_W3%=80+16  '曲選択ウィンドウ左上隅座標
  142. 10620 VIL_W4%=255                   'MMLデータ数
  143. 10630 VIL_W5%=16                    '曲データ数
  144. 10640 VIL_W6%=0                     'オンメモリにおく曲データ数-1
  145. 10650 GOSUB *VIL_BGMFM_INITM
  146. 10660 '
  147. 10670 VIL_W0%=160+64:VIL_W1%=80+64   'BGM-CDウィンドウ左上隅座標
  148. 10680 GOSUB *VIL_BGMCD_INITM
  149. 10690 '
  150. 10700 '
  151. 10710 '<<<<<<<<<<<<<<<<<<<<  MAIN MENU  >>>>>>>>>>>>>>>>>>>>
  152. 10720 *MAINMENU
  153. 10730 '
  154. 10740 GOSUB *VIL_WIN_PMA
  155. 10750 CLS:PALETTE 4,[100,0,150]
  156. 10760 LINE(0,0)-(639,479),PSET,%4,BF
  157. 10770 LINE(216,128)-(423,399),PRESET,,BF
  158. 10780 SYMBOL(224,32),"Visual Interface Library",1,1,7
  159. 10790 SYMBOL(272,64),"VIL",2,2,4,,,7
  160. 10800 SYMBOL(192,104),"デモンストレ-ション  プログラム",1,1,4
  161. 10810 RESTORE 10860
  162. 10820 FOR Y=0 TO 3
  163. 10830   READ A$
  164. 10840   SYMBOL(232,Y*32+144),FNVIL_P2S$(Y+1)+" "+A$,1,1,7
  165. 10850 NEXT
  166. 10860 DATA "はじめに","基本パッケージ"
  167. 10870 DATA "ウィンドウマネージャ","ユーティリティ"
  168. 10880 '
  169. 10890 VIL_X%=224:VIL_Y%=142:VIL_W%=VIL_X%+191:VIL_Z%=VIL_Y%+19
  170. 10900 VIL_XN%=1:VIL_YN%=4:VIL_YL%=32:VIL_MSEL_BD%=0:VIL_C%=15:VIL_CB%=0
  171. 10910 VIL_MSEL_MN%=100:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=4
  172. 10920 GOSUB *VIL_MSEL_M
  173. 10930 IF VIL_KN%>0 THEN ON VIL_KN% GOSUB *INTRO,*BAS,*VWM,*UTY
  174. 10940 GOTO *MAINMENU
  175. 10950 '
  176. 10960 '<<<<<<<<<<<<<<<<<<<<  はじめに  >>>>>>>>>>>>>>>>>>>>
  177. 10970 *INTRO
  178. 10980 CLS
  179. 10990 VIL_WIN_X%=8:VIL_WIN_Y%=14:VIL_WIN_W%=VIL_WIN_X%+399:VIL_WIN_Z%=471
  180. 11000 VIL_VWM_AT%=0:VIL_VWM_T$="INTRO"
  181. 11010 GOSUB *VIL_VWM_OP
  182. 11020 SYMBOL(8,  8),"         ~ はじめに ~       ",1,1,6
  183. 11030 SYMBOL(8, 36)," VILはF-BASIC386上のプログラムで、",1,1,7
  184. 11040 SYMBOL(8, 56),"マルチウィンドウ表示・マウス入力などのユーザ・イ",1,1,7
  185. 11050 SYMBOL(8, 76),"ンタフェースを実現するサブルーチン集です。   ",1,1,7
  186. 11060 SYMBOL(8, 96)," このデモンストレーション・プログラムでは、以下",1,1,7
  187. 11070 SYMBOL(8,116),"の項目でその機能を説明します。         ",1,1,7
  188. 11080 SYMBOL(8,136)," 2.基本パッケージ              ",1,1,7
  189. 11090 SYMBOL(8,156)," 3.ウィンドウマネージャ           ",1,1,7
  190. 11100 SYMBOL(8,176)," 4.ユーティリティ              ",1,1,7
  191. 11110 SYMBOL(8,436)," リターンキーかマウスの左ボタンを押してください ",1,1,6
  192. 11120 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
  193. 11130 GOSUB *VIL_VWM_CL
  194. 11140 RETURN
  195. 11150 '
  196. 11160 '<<<<<<<<<<<<<<<<<<<<  基本パッケージ  >>>>>>>>>>>>>>>>>>>>
  197. 11170 *BAS
  198. 11180 '
  199. 11190 CLS
  200. 11200 LINE(0,0)-(639,479),PSET,4,BF
  201. 11210 FOR I=0 TO 30
  202. 11220   LINE(RND*639,RND*480)-(RND*639,RND*480),XOR,RND*6+1,BF
  203. 11230 NEXT
  204. 11240 '
  205. 11250 VIL_WIN_X%=30:VIL_WIN_Y%=50
  206. 11260 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  207. 11270 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  208. 11280 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  209. 11290 CLS
  210. 11300 SYMBOL(8,  8)," ~ VIL 基本パッケージ ~ ",1,1,6
  211. 11310 SYMBOL(8, 36),"基本パッケージは以下のパッケージ",1,1,7
  212. 11320 SYMBOL(8, 56),"から成っています。              ",1,1,7
  213. 11330 SYMBOL(8, 76),"・ブザー音パッケージ            ",1,1,7
  214. 11340 SYMBOL(8, 96),"・ウィンドウ・パッケージ        ",1,1,7
  215. 11350 SYMBOL(8,116),"・メニュー選択パッケージ        ",1,1,7
  216. 11360 SYMBOL(8,136),"・入力パッケージ                ",1,1,7
  217. 11370 '
  218. 11380 VIL_WIN_X%=50:VIL_WIN_Y%=240
  219. 11390 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
  220. 11400 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  221. 11410 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  222. 11420 CLS
  223. 11430 SYMBOL(8,  8),"ウィンドウ・パッケージでは",1,1,7
  224. 11440 SYMBOL(8, 28),"このように画面の矩形領域を",1,1,7
  225. 11450 SYMBOL(8, 48),"退避し、ウィンドウを開くこ",1,1,7
  226. 11460 SYMBOL(8, 68),"とができます。      ",1,1,7
  227. 11470 '
  228. 11480 VIL_WIN_X%=30:VIL_WIN_Y%=350
  229. 11490 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
  230. 11500 VIL_WIN_UB%=5:VIL_WIN_DB%=5:VIL_WIN_LB%=5:VIL_WIN_RB%=5
  231. 11510 GOSUB *VIL_WIN_PMA
  232. 11520 GOSUB *VIL_WIN_OP
  233. 11530 'GOSUB *VIL_WIN_PMA
  234. 11540 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-5)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,0,B
  235. 11550 LINE(VIL_WIN_X%-4,VIL_WIN_Y%-4)-(VIL_WIN_W%+4,VIL_WIN_Z%+4),PSET,7,BF
  236. 11560 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2),PSET,0,B
  237. 11570 LINE(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,0,B
  238. 11580 GOSUB *VIL_WIN_PMR
  239. 11590 SYMBOL(8,  8),"必要ならばユーザ・プログラムが",1,1,0
  240. 11600 SYMBOL(8, 28),"枠などを描画できます。    ",1,1,0
  241. 11610 '
  242. 11620 VIL_WIN_X%=360:VIL_WIN_Y%=40
  243. 11630 VIL_WIN_W%=VIL_WIN_X%+16*11+15:VIL_WIN_Z%=VIL_WIN_Y%+139
  244. 11640 VIL_WIN_UB%=2:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
  245. 11650 GOSUB *VIL_WIN_PMA
  246. 11660 GOSUB *VIL_WIN_OP
  247. 11670 'GOSUB *VIL_WIN_PMA
  248. 11680 DEF PEN 0,2
  249. 11690 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,1,B
  250. 11700 GOSUB *VIL_WIN_PMR
  251. 11710 CLS
  252. 11720 FOR I=1 TO 7
  253. 11730   CIRCLE(0,0),I*5,I
  254. 11740   CIRCLE(190,10),I*5,I
  255. 11750   SYMBOL(-60+I*8*6,120),"SAMPLE",1,1,I
  256. 11760 NEXT
  257. 11770 SYMBOL(8, 50),"ウィンドウ内への描画は",1,1,7
  258. 11780 SYMBOL(8, 70),"このようにクリッピング",1,1,7
  259. 11790 SYMBOL(8, 90),"させることが可能です。",1,1,7
  260. 11800 '
  261. 11810 PALETTE 4,[ 64, 64, 64]
  262. 11820 PALETTE 5,[128,  0,  0]
  263. 11830 RESTORE 12060
  264. 11840 FOR I=0 TO 2
  265. 11850   VIL_WIN_X%=320+I*24:VIL_WIN_Y%=240+I*48
  266. 11860   VIL_WIN_W%=VIL_WIN_X%+119:VIL_WIN_Z%=VIL_WIN_Y%+63
  267. 11870   VIL_WIN_UB%=16:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
  268. 11880   GOSUB *VIL_WIN_PMA
  269. 11890   GOSUB *VIL_WIN_OP
  270. 11900   'GOSUB *VIL_WIN_PMA
  271. 11910   LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16)                                                -(VIL_WIN_W%+2,VIL_WIN_Y%- 2),PSET,%5,BF
  272. 11920   DEF PEN 0,2
  273. 11930   LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16)                                                -(VIL_WIN_W%+1,VIL_WIN_Z%+ 1),PSET,%4,B
  274. 11940   LINE(VIL_WIN_X%-2,VIL_WIN_Y%- 2)                                                -(VIL_WIN_W%+1,VIL_WIN_Y% -2),PSET,%4
  275. 11950   DEF PEN 0,1
  276. 11960   LINE(VIL_WIN_X%+1,VIL_WIN_Y%-13)                                                -(VIL_WIN_X%+9,VIL_WIN_Y%-4),PSET,%4,B
  277. 11970   CIRCLE(VIL_WIN_X%+5,VIL_WIN_Y%-8.6!),2,%1,1.5!,,,F
  278. 11980   LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13)                                                -(VIL_WIN_W%-9,VIL_WIN_Y%- 4),PSET,%4,B
  279. 11990   LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13)                                                -(VIL_WIN_W%-5,VIL_WIN_Y%- 8),PSET,%4,B
  280. 12000   SYMBOL(VIL_WIN_X%+13,VIL_WIN_Y%-11),"xterm",.5!,.5!,%4
  281. 12010   GOSUB *VIL_WIN_PMR
  282. 12020   CLS
  283. 12030   READ A$
  284. 12040   SYMBOL(8,8),A$,1,1,7
  285. 12050 NEXT
  286. 12060 DATA "ウィンドウの","重ね合わせも","このとおり"
  287. 12070 '
  288. 12080 RESTORE 12190
  289. 12090 GOSUB *VIL_WIN_PMA
  290. 12100 LINE(316,434)-(639,479),PSET,7,BF
  291. 12110 SYMBOL(324,440),"リターンキーまたはマウスの左クリックで",1,1,0
  292. 12120 SYMBOL(324,460),"ウィンドウが1個ずつ閉じます。",1,1,0
  293. 12130 FOR I=1 TO 6 
  294. 12140   WHILE INKEY$=CHR$(13) OR MOUSE(3,0):WEND
  295. 12150   WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0:WEND
  296. 12160   READ VIL_WIN_UB%,VIL_WIN_DB%,VIL_WIN_LB%,VIL_WIN_RB%
  297. 12170   GOSUB *VIL_WIN_CL 
  298. 12180 NEXT
  299. 12190 DATA 16,2,2,2, 16,2,2,2, 16,2,2,2, 2,2,2,2, 5,5,5,5, 0,0,0,0
  300. 12200 '
  301. 12210 LINE(316,434)-(639,479),PSET,7,BF
  302. 12220 SYMBOL(324,440),"取消キーまたはマウスの右クリックで",1,1,0
  303. 12230 SYMBOL(324,460),"次に進みます。",1,1,0
  304. 12240 '
  305. 12250 VIL_WIN_X%=50:VIL_WIN_Y%=240
  306. 12260 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+128+16+7
  307. 12270 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  308. 12280 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  309. 12290 CLS
  310. 12300 SYMBOL(8,  8),"メニュー選択パッケージでは",1,1,7
  311. 12310 SYMBOL(8, 28),"・マウス         ",1,1,7
  312. 12320 SYMBOL(8, 48),"・テンキー        ",1,1,7
  313. 12330 SYMBOL(8, 68),"・カ-ソルキー      ",1,1,7
  314. 12340 SYMBOL(8, 88),"のいずれかを使用して、  ",1,1,7
  315. 12350 SYMBOL(8,108),"画面の矩形領域(ボックス)",1,1,7
  316. 12360 SYMBOL(8,128),"の一つを選択できます。  ",1,1,7
  317. 12370 '
  318. 12380 VIL_WIN_X%=320:VIL_WIN_Y%=40
  319. 12390 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+359
  320. 12400 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  321. 12410 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  322. 12420 '
  323. 12430 CLS
  324. 12440 SYMBOL(8,  8),"例えば下の数字の中から",1,1,7
  325. 12450 SYMBOL(8, 28),"一つ選択してみてください。",1,1,7
  326. 12460 FOR Y=0 TO 2
  327. 12470   FOR X=0 TO 2
  328. 12480     LINE(X*64+16,192-Y*64)-(X*64+63,192-Y*64+47),PSET,7,B
  329. 12490     SYMBOL(X*64+28,194-Y*64),FNVIL_I2S$(Y*3+X+1),3,3,7
  330. 12500   NEXT
  331. 12510 NEXT
  332. 12520 SYMBOL(16, 304),"選択→",1,1,7
  333. 12530 LINE(80,288)-(127,335),PSET,7,B
  334. 12540 '
  335. 12550 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
  336. 12560 '
  337. 12570 VIL_X%=12:VIL_Y%=188:VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+55
  338. 12580 VIL_XN%=3:VIL_YN%=3:VIL_XL%=64:VIL_YL%=64:VIL_MSEL_BD%=4:VIL_C%=10
  339. 12590 VIL_MSEL_BB%=1:VIL_MSEL_BE%=9
  340. 12600 GOSUB *VIL_MSEL_M
  341. 12610 IF VIL_KN%>0 THEN
  342. 12620   LINE(81,289)-(126,334),PRESET,,BF
  343. 12630   SYMBOL(92,290),FNVIL_P2S$(VIL_KN%),3,3,6
  344. 12640 ENDIF
  345. 12650 IF VIL_KN%<>-1 THEN 12570
  346. 12660 '
  347. 12670 CLS
  348. 12680 '
  349. 12690 ANS=INT(RND*64)+1
  350. 12700 FOR Y=0 TO 7
  351. 12710   FOR X=0 TO 7
  352. 12720     XA=RND*8:YA=RND*8
  353. 12730     SYMBOL(X*24+XA+64,Y*24+YA+64),                                                     KMID$("ΤT",2+(Y*8+X+1=ANS),1),1,1,RND*6+1
  354. 12740   NEXT
  355. 12750 NEXT
  356. 12760 SYMBOL(8,260)," ☆☆☆  「Τを探せ」ゲ-ム  ☆☆☆ ",1,1,6
  357. 12770 SYMBOL(8,280),"T(ティー)の中に一つだけ隠れている  ",1,1,4
  358. 12780 SYMBOL(8,300),"Τ(タウ)を見つけて選択してください。",1,1,4
  359. 12790 '
  360. 12800 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
  361. 12810 '
  362. 12820 VIL_X%=64:VIL_Y%=64:VIL_W%=VIL_X%+23:VIL_Z%=VIL_Y%+23
  363. 12830 VIL_XL%=24:VIL_YL%=24:VIL_XN%=8:VIL_YN%=8:VIL_MSEL_BD%=0:VIL_C%=15
  364. 12840 VIL_MSEL_BB%=1:VIL_MSEL_BE%=64
  365. 12850 GOSUB *VIL_MSEL_M
  366. 12860 IF VIL_KN%>0 THEN 
  367. 12870   IF VIL_KN%=ANS THEN
  368. 12880     LINE(80,320)-(239,335),PRESET,,BF
  369. 12890     SYMBOL(80,320),"☆☆☆ 正解! ☆☆☆",1,1,6
  370. 12900     GOSUB *VIL_BEEP_G
  371. 12910     GOTO 12670
  372. 12920   ELSE
  373. 12930     LINE(80,320)-(239,335),PRESET,,BF
  374. 12940     SYMBOL(80,320),"××× はずれ ×××",1,1,2
  375. 12950     GOSUB *VIL_BEEP_B
  376. 12960   ENDIF
  377. 12970 ENDIF
  378. 12980 IF VIL_KN%<>-1 THEN 12830
  379. 12990 '
  380. 13000 CLS
  381. 13010 '
  382. 13020 LINE(4,  4)-(299,295),PSET,4,B
  383. 13030 LINE(8, 30)-(295,229),PSET,4,B
  384. 13040 LINE(8,234)-(295,261),PSET,4,B
  385. 13050 SYMBOL(104,10),"MYSTIC HOUSE",1,1,4
  386. 13060 SYMBOL(16,238),"見る   取る   動かす たたく 終わる",1,1,4
  387. 13070 SYMBOL(8,302)," ↑ アドベンチャーゲームなどにも",1,1,7
  388. 13080 SYMBOL(8,322),"   利用できます。",1,1,7
  389. 13090 RESTORE 13140
  390. 13100 FOR I=0 TO 17
  391. 13110   READ K,X,Y:LINE(X,Y)-(X,Y),PSET,4
  392. 13120   FOR J=2 TO K:READ X,Y:LINE -(X,Y),PSET,4:NEXT
  393. 13130 NEXT
  394. 13140 DATA 4,  48, 30,  48,110, 255,110, 255, 30
  395. 13150 DATA 2,  48,110,   8,229
  396. 13160 DATA 2, 255,110, 295,229
  397. 13170 DATA 4,  70,110,  70, 35, 110, 35, 110,110
  398. 13180 DATA 5,  74, 70,  74, 73,  77, 73,  77, 70,  74, 70
  399. 13190 DATA 5, 130,130, 120,160, 210,160, 200,130, 130,130
  400. 13200 DATA 4, 120,160, 120,170, 210,170, 210,160
  401. 13210 DATA 4, 135,170, 125,210, 130,210, 140,170
  402. 13220 DATA 4, 195,170, 205,210, 200,210, 190,170
  403. 13230 DATA 5, 265, 40, 265, 80, 280,130, 280, 90, 265, 40
  404. 13240 DATA 5, 160, 45, 160, 80, 200, 80, 200, 45, 160, 45
  405. 13250 DATA 5, 170, 50, 173, 74, 187, 70, 188, 52, 170, 50
  406. 13260 DATA 2, 174, 56, 177, 55
  407. 13270 DATA 2, 182, 56, 185, 58
  408. 13280 DATA 2, 180, 57, 178, 62
  409. 13290 DATA 2, 176, 70, 181, 67
  410. 13300 DATA 5,  65,127,  65, 122, 70,127,  65,127, 58,134
  411. 13310 DATA 2,  61,131,63,134
  412. 13320 '
  413. 13330 VIL_MSEL_BN%=1:VIL_MSEL_BC%=0
  414. 13340 '
  415. 13350 VIL_X%=14:VIL_Y%=236:VIL_W%=VIL_X%+51:VIL_Z%=VIL_Y%+23
  416. 13360 VIL_XN%=5:VIL_YN%=1:VIL_XL%=56:VIL_MSEL_BD%=0:VIL_C%=15
  417. 13370 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5:VIL_MSEL_MN%=101
  418. 13380 GOSUB *VIL_MSEL_M
  419. 13390 IF VIL_KN%>0 THEN
  420. 13400   VIL_X%=8:VIL_Y%=265:VIL_L%=36:VIL_C%=12
  421. 13410   VIL_A$=KMID$("見る 取る 動かすたたく終わる",VIL_KN%*3-2,3)
  422. 13420   GOSUB *VIL_INP_GPRINT
  423. 13430   IF VIL_KN%=5 THEN 13890
  424. 13440   VERB=VIL_KN%
  425. 13450 '
  426. 13460   RESTORE 13560
  427. 13470   FOR I=1 TO 5
  428. 13480     READ VIL_MSEL_X%(I),VIL_MSEL_Y%(I),VIL_MSEL_W%(I),VIL_MSEL_Z%(I)
  429. 13490   NEXT
  430. 13500   VIL_XN%=5:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15
  431. 13510   VIL_MSEL_MN%=102:VIL_MSEL_BC%=0
  432. 13520   VIL_MSEL_BB%=1:VIL_MSEL_BE%=5
  433. 13530   GOSUB *VIL_MSEL_IN
  434. 13540   GOSUB *VIL_MSEL_BC
  435. 13550   IF VIL_KN%<1 THEN 13460
  436. 13560   DATA  68, 33,112,112
  437. 13570   DATA 158, 43,202, 82 
  438. 13580   DATA 263, 38,282,132
  439. 13590   DATA  56,120, 72,136
  440. 13600   DATA 118,128,212,212
  441. 13610 '
  442. 13620   RESTORE 13630:FOR I=1 TO VIL_KN%:READ VIL_A$:NEXT
  443. 13630   DATA ドア,肖像画,窓,鍵,テーブル
  444. 13640   VIL_X%=64:VIL_Y%=265:VIL_L%=8:VIL_C%=12:VIL_CB%=0
  445. 13650   GOSUB *VIL_INP_GPRINT
  446. 13660 '
  447. 13670   RESTORE 13750
  448. 13680   FOR I=1 TO VERB
  449. 13690     IF I=VERB THEN
  450. 13700       FOR J=1 TO VIL_KN%:READ VIL_A$:NEXT
  451. 13710     ELSE
  452. 13720       FOR J=1 TO 5:READ VIL_A$:NEXT
  453. 13730     ENDIF
  454. 13740   NEXT
  455. 13750   DATA "閉まっている   ","見覚えのない顔だ ","外は晴れている  "
  456. 13760   DATA "黄金の鍵だ    ","埃が積もっている "
  457. 13770   DATA "取れるわけがない ","使い道はなさそうだ","取れるわけがない "
  458. 13780   DATA "何故か取れない  ","重くて持てない  "
  459. 13790   DATA "鍵が掛かっている ","ネジ止めされている","錆びついている  "
  460. 13800   DATA "何故か動かない  ","疲れるからいやだ "
  461. 13810   DATA "トントン     ","手が痛いからいやだ","叩いても開かない "
  462. 13820   DATA "叩いてどーする  ","ドンドン     "
  463. 13830   VIL_X%=136:VIL_Y%=265:VIL_L%=20:VIL_C%=12:VIL_CB%=0
  464. 13840   VIL_A$=": "+VIL_A$
  465. 13850   GOSUB *VIL_INP_GPRINT
  466. 13860 ENDIF
  467. 13870 GOTO 13350
  468. 13880 '
  469. 13890 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CL:GOSUB *VIL_WIN_CL
  470. 13900 '
  471. 13910 VIL_WIN_X%=50:VIL_WIN_Y%=240
  472. 13920 VIL_WIN_W%=VIL_WIN_X%+16*10+15:VIL_WIN_Z%=VIL_WIN_Y%+48+16+7
  473. 13930 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  474. 13940 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  475. 13950 CLS
  476. 13960 SYMBOL(8,  8),"入力パッケージでは、",1,1,7
  477. 13970 SYMBOL(8, 28),"任意長の半角文字列を",1,1,7
  478. 13980 SYMBOL(8, 48),"入力できます。   ",1,1,7
  479. 13990 '
  480. 14000 VIL_WIN_X%=320:VIL_WIN_Y%=40
  481. 14010 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+375
  482. 14020 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  483. 14030 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  484. 14040 NAM$="":TIM$=""
  485. 14050 '
  486. 14060 CLS
  487. 14070 SYMBOL(8,  8),"***** 使用可能キー *****",1,1,6
  488. 14080 SYMBOL(8, 28),"[RET]   : 決定           ",1,1,7
  489. 14090 SYMBOL(8, 48),"[取消]  : 取消           ",1,1,7
  490. 14100 SYMBOL(8, 68),"← →  : カーソル移動       ",1,1,7
  491. 14110 SYMBOL(8, 88),"[BS]    : カーソル位置の左1文字削除",1,1,7
  492. 14120 SYMBOL(8,108),"[削除]  : カーソル位置1文字削除  ",1,1,7
  493. 14130 SYMBOL(8,128),"[HOME]  : クリア          ",1,1,7
  494. 14140 SYMBOL(8,148),"※ マウスの左/右ボタンは[RET]/[取消]",1,1,7
  495. 14150 SYMBOL(8,168),"   と同じ意味を持ちます。      ",1,1,7
  496. 14160 SYMBOL(8,198),"*****   使用例   *****",1,1,6
  497. 14170 '
  498. 14180 SYMBOL(8,218),"あなたの名前を入力してください。  ",1,1,7
  499. 14190 SYMBOL(8,238),"(半角16文字以内) :         ",1,1,7
  500. 14200 '
  501. 14210 VIL_X%=8+16*9:VIL_Y%=238:VIL_L%=16:VIL_C%=15:VIL_CB%=0:VIL_A$=NAM$
  502. 14220 GOSUB *VIL_INP_STR
  503. 14230 IF VIL_KN%=-1 OR VIL_KN%=-2 OR VIL_A$="" THEN 14210
  504. 14240 NAM$=VIL_A$
  505. 14250 '
  506. 14260 SYMBOL(8,258),"現在時刻を入力してください。    ",1,1,7
  507. 14270 SYMBOL(8,278),"(00:00~23:59)   :         ",1,1,7
  508. 14280 '
  509. 14290 VIL_X%=8+16*9:VIL_Y%=278:VIL_L%=5:VIL_C%=15:VIL_CB%=0:VIL_A$=TIM$
  510. 14300 GOSUB *VIL_INP_STR
  511. 14310 IF VIL_KN%=-1 OR VIL_KN%=-2 OR VIL_A$="" THEN 14290
  512. 14320 TIM$=VIL_A$
  513. 14330 IF LEN(VIL_A$)<>5 OR MID$(VIL_A$,3,1)<>":" THEN 14290
  514. 14340 HOUR=VAL(LEFT$(VIL_A$,2)):MINUTE=VAL(MID$(VIL_A$,4,2))
  515. 14350 IF HOUR<0 OR 23<HOUR OR MINUTE<0 OR 59<MINUTE THEN
  516. 14360   GOSUB *VIL_BEEP_B:GOTO 14290
  517. 14370 ENDIF
  518. 14380 IF 6<=HOUR AND HOUR<=11 THEN
  519. 14390   A$="おはよう。"
  520. 14400 ELSE IF 12=<HOUR AND HOUR<=18 THEN
  521. 14410   A$="こんにちは。"
  522. 14420 ELSE
  523. 14430   A$="こんばんは。"
  524. 14440 ENDIF
  525. 14450 '
  526. 14460 SYMBOL(8,298),"現在"+FNVIL_P2S$(HOUR)+"時"+FNVIL_P2S$(MINUTE)+"分。"                      ,1,1,4
  527. 14470 SYMBOL(8,318),NAM$+"さん、"+A$,1,1,4
  528. 14480 SYMBOL(8,346),"もう一度やる?",1,1,7
  529. 14490 VIL_MSEL_BN%=1
  530. 14500 VIL_X%=132:VIL_Y%=342
  531. 14510 GOSUB *VIL_SEL_YN
  532. 14520 IF VIL_KN%<1 THEN 14500
  533. 14530 IF VIL_KN%=1 THEN 14060
  534. 14540 '
  535. 14550 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CLALL
  536. 14560 RETURN
  537. 14570 '
  538. 14580 '<<<<<<<<<<<<<<<<<<<<  ウィンドウマネージャ  >>>>>>>>>>>>>>>>>>>>
  539. 14590 *VWM
  540. 14600 CLS
  541. 14610 VIL_VWM_N%=0
  542. 14620 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8
  543. 14630                                               'ウィンドウ枠幅設定
  544. 14640 PALETTE 7,[255,255,255]  'パレット(8 XOR 15)を白にする
  545. 14650 PALETTE 5,[80,80,0]
  546. 14660 FOR Y=0 TO 479 STEP 16
  547. 14670   FOR X=0 TO 639 STEP 8*7
  548. 14680     SYMBOL(X,Y),"VIL ",1,1,%5,,NOT
  549. 14690   NEXT
  550. 14700 NEXT
  551. 14710 '
  552. 14720 VIL_WIN_X%=100                :VIL_WIN_Y%=40
  553. 14730 VIL_WIN_W%=VIL_WIN_X%+16*19+15:VIL_WIN_Z%=VIL_WIN_Y%+8+16+7
  554. 14740 VIL_VWM_T$="VWM":VIL_VWM_AT%=0
  555. 14750 GOSUB *VIL_VWM_OP
  556. 14760 SYMBOL(  8,  8),"~ ウィンドウマネージャ・パッケージ ~",1,1,6
  557. 14770 '
  558. 14780 GOSUB *VIL_WIN_PMA
  559. 14790 VIL_WIN_X%=20                 :VIL_WIN_Y%=80
  560. 14800 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  561. 14810 VIL_VWM_T$="MOVE":VIL_VWM_AT%=8
  562. 14820 GOSUB *VIL_VWM_OP
  563. 14830 SYMBOL(  8,  8),"   ~ ウィンドウ移動 ~   ",1,1,6
  564. 14840 SYMBOL(  8, 36)," MOVE 属性をもつウィンドウは、上",1,1,7
  565. 14850 SYMBOL(  8, 56),"部のタイトルバーにマウスカーソル",1,1,7
  566. 14860 SYMBOL(  8, 76),"を合わせて左ボタンを押すと、ドラ",1,1,7
  567. 14870 SYMBOL(  8, 96),"ッグで動かすことができます。  ",1,1,7
  568. 14880 SYMBOL(  8,136),"       納得した。→   ",1,1,7
  569. 14890 '
  570. 14900 VIL_KN%=0
  571. 14910 WHILE VIL_KN%<>1
  572. 14920   VIL_X%=228:VIL_Y%=132
  573. 14930   GOSUB *VIL_SEL_OK
  574. 14940   IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
  575. 14950 WEND
  576. 14960 '
  577. 14970 VIL_WIN_X%=60                 :VIL_WIN_Y%=122
  578. 14980 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+116+16+7
  579. 14990 VIL_VWM_T$="CLOSE 0":VIL_VWM_AT%=0
  580. 15000 GOSUB *VIL_VWM_OP
  581. 15010 SYMBOL(8, 8)," ~ ウィンドウ・クローズ ~ ",1,1,6
  582. 15020 SYMBOL(8,36),"CLOSE 属性をもつウィンドウは、",1,1,7
  583. 15030 SYMBOL(8,56),"左上隅の スイッチをクリックす",1,1,7
  584. 15040 SYMBOL(8,76),"ると、閉じることができます。 ",1,1,7
  585. 15050 LINE(75,60)-(84,69),PSET,7,B
  586. 15060 LINE(75,60)-(84,69),PSET,7
  587. 15070 LINE(75,69)-(84,60),PSET,7
  588. 15080 '
  589. 15090 VIL_WIN_X%=160                :VIL_WIN_Y%=250
  590. 15100 VIL_WIN_W%=VIL_WIN_X%+16*12+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
  591. 15110 VIL_VWM_T$="CLOSE 1":VIL_VWM_AT%=2
  592. 15120 GOSUB *VIL_VWM_OP
  593. 15130 SYMBOL(8, 8),"例えば、このウィンドウを",1,1,7
  594. 15140 SYMBOL(8,28),"閉じてみてください。  ",1,1,7
  595. 15150 '
  596. 15160 VIL_VWM_R%=0
  597. 15170 WHILE VIL_VWM_R%<>2
  598. 15180   MOUSE 1,,,1
  599. 15190   WHILE MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
  600. 15200   VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  601. 15210   MOUSE 1,,,0
  602. 15220   GOSUB *VIL_VWM_WIN
  603. 15230 WEND
  604. 15240 '
  605. 15250 WHILE INKEY$<>"":WEND
  606. 15260 SYMBOL(8,116),"もう一度やる?",1,1,7
  607. 15270 'VIL_KN%=0
  608. 15280 VIL_X%=132:VIL_Y%=112
  609. 15290 GOSUB *VIL_SEL_YN
  610. 15300 IF VIL_KN%<1 THEN 15280
  611. 15310 IF VIL_KN%=1 THEN 15090
  612. 15320 '
  613. 15330 VIL_WIN_X%=100                :VIL_WIN_Y%=164
  614. 15340 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  615. 15350 VIL_VWM_T$="HIDE":VIL_VWM_AT%=4
  616. 15360 GOSUB *VIL_VWM_OP
  617. 15370 SYMBOL(8,  8)," ~ ウィンドウ一時消去 ~ ",1,1,6
  618. 15380 SYMBOL(8, 36)," HIDE 属性をもつウィンドウは、",1,1,7
  619. 15390 SYMBOL(8, 56),"左上隅の スイッチをクリックす",1,1,7
  620. 15400 SYMBOL(8, 76),"ると、左ボタンを押している間、",1,1,7
  621. 15410 SYMBOL(8, 96),"一時的に閉じることができます。",1,1,7
  622. 15420 SYMBOL(8,136),"  納得したら  →      ",1,1,7
  623. 15430 LINE(75,60)-(84,69),PSET,7,B
  624. 15440 LINE(75,69)-(84,60),PSET,7
  625. 15450 '
  626. 15460 VIL_KN%=0
  627. 15470 WHILE VIL_KN% <> 1
  628. 15480   VIL_X%=212:VIL_Y%=132
  629. 15490   GOSUB *VIL_SEL_OK
  630. 15500   IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
  631. 15510 WEND
  632. 15520 '
  633. 15530 VIL_WIN_X%=140                :VIL_WIN_Y%=206
  634. 15540 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  635. 15550 VIL_VWM_T$="RESIZE":VIL_VWM_AT%=16
  636. 15560 GOSUB *VIL_VWM_OP
  637. 15570 SYMBOL(8,  8)," ~ ウィンドウ・サイズ変更 ~ ",1,1,6
  638. 15580 SYMBOL(8, 36)," RESIZE 属性をもつウィンドウは、",1,1,7
  639. 15590 SYMBOL(8, 56),"右上隅の スイッチにマウスカーソ",1,1,7
  640. 15600 SYMBOL(8, 76),"ルを合わせて左ボタンを押すと、ド",1,1,7
  641. 15610 SYMBOL(8, 96),"ラッグで大きさを変えることができ",1,1,7
  642. 15620 SYMBOL(8,116),"ます。                          ",1,1,7
  643. 15630 SYMBOL(8,136),"  納得したら  →       ",1,1,7
  644. 15640 LINE(75,60)-(84,69),PSET,7,B
  645. 15650 LINE(75,64)-(80,69),PSET,7,B
  646. 15660 '
  647. 15670 'VIL_KN%=0
  648. 15680 VIL_X%=212:VIL_Y%=132
  649. 15690 GOSUB *VIL_SEL_OK
  650. 15700 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN:IF VIL_VWM_R%=16 THEN 15570
  651. 15710 IF VIL_KN%<>1 THEN 15680
  652. 15720 '
  653. 15730 FOR I=1 TO 4:GOSUB *VIL_VWM_CL:NEXT
  654. 15740 VIL_WIN_X%=20                 :VIL_WIN_Y%=80
  655. 15750 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+218+16+7
  656. 15760 VIL_VWM_T$="ALL 0":VIL_VWM_AT%=0
  657. 15770 GOSUB *VIL_VWM_OP
  658. 15780 SYMBOL(8,  8)," 最後の例として、全属性を指定したウ",1,1,7
  659. 15790 SYMBOL(8, 28),"ィンドウを右に挙げます。いろいろ試し",1,1,7
  660. 15800 SYMBOL(8, 48),"てみてください。          ",1,1,7
  661. 15810 SYMBOL(8, 68)," なお、このウィンドウは      ",1,1,7
  662. 15820 SYMBOL(8, 88),"・移動範囲   : (120,40)-(599,439) ",1,1,4
  663. 15830 SYMBOL(8,108),"・最大サイズ  : 328×248ドット   ",1,1,4
  664. 15840 SYMBOL(8,128),"・最小サイズ  : 136× 72ドット   ",1,1,4
  665. 15850 SYMBOL(8,148),"・移動単位   : X・Y方向共 8ドット ",1,1,4
  666. 15860 SYMBOL(8,168),"・リサイズ単位 : X・Y方向共16ドット ",1,1,4
  667. 15870 SYMBOL(8,188),"となっています。          ",1,1,7
  668. 15880 '
  669. 15890 VIL_WIN_X%=320           :VIL_WIN_Y%=120
  670. 15900 VIL_WIN_W%=VIL_WIN_X%+167:VIL_WIN_Z%=VIL_WIN_Y%+119
  671. 15910 VIL_VWM_T$="ALL 1":VIL_VWM_AT%=1+2+4+8+16
  672. 15920 GOSUB *VIL_VWM_OP
  673. 15930 GOSUB 16390
  674. 15940 VIL_VWM_XM%=120       '移動/リサイズ時ウィンドウ左上隅座標最小値
  675. 15950 VIL_VWM_YM%= 40
  676. 15960 VIL_VWM_WM%=599       '移動/リサイズ時ウィンドウ右下隅座標最大値
  677. 15970 VIL_VWM_ZM%=439
  678. 15980 VIL_VWM_XL%=136       'リサイズ時のX・Y方向長さ最小値
  679. 15990 VIL_VWM_YL%= 72
  680. 16000 VIL_VWM_WL%=328       'リサイズ時のX・Y方向長さ最大値
  681. 16010 VIL_VWM_ZL%=248
  682. 16020 VIL_VWM_XD%=  8       '移動時の単位ドット数
  683. 16030 VIL_VWM_YD%=  8
  684. 16040 VIL_VWM_WD%= 16       'リサイズ時の単位ドット数
  685. 16050 VIL_VWM_ZD%= 16
  686. 16060 '
  687. 16070 MOUSE 1,,,1:VIL_VWM_R%=0
  688. 16080 WHILE VIL_VWM_R%<>2
  689. 16090   VIL_X%=8:VIL_Y%=8:VIL_W%=VIL_X%+7:VIL_Z%=VIL_Y%+7
  690. 16100   VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
  691. 16110   VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
  692. 16120   GOSUB *VIL_MSEL_M
  693. 16130   GOSUB *VIL_VWM_CHECK
  694. 16140   IF VIL_VWM_R% AND VIL_VWM_R%<>2 THEN GOSUB 16390
  695. 16150 WEND
  696. 16160 '
  697. 16170 SYMBOL(8,218),"もう一度やる?",1,1,7
  698. 16180 'VIL_KN%=0
  699. 16190 VIL_X%=132:VIL_Y%=218
  700. 16200 GOSUB *VIL_SEL_YN
  701. 16210 IF VIL_KN%<1 THEN 16200
  702. 16220 IF VIL_KN%=1 THEN 15890
  703. 16230 '
  704. 16240 VIL_VWM_XM%=  8       '移動/リサイズ時ウィンドウ左上隅座標最小値
  705. 16250 VIL_VWM_YM%= 14
  706. 16260 VIL_VWM_WM%=631       '移動/リサイズ時ウィンドウ右下隅座標最大値
  707. 16270 VIL_VWM_ZM%=471
  708. 16280 VIL_VWM_XL%= 32       'リサイズ時のX・Y方向長さ最小値
  709. 16290 VIL_VWM_YL%=  8
  710. 16300 VIL_VWM_WL%=624       'リサイズ時のX・Y方向長さ最大値
  711. 16310 VIL_VWM_ZL%=458
  712. 16320 VIL_VWM_XD%=  1       '移動時の単位ドット数
  713. 16330 VIL_VWM_YD%=  1
  714. 16340 VIL_VWM_WD%=  1       'リサイズ時の単位ドット数
  715. 16350 VIL_VWM_ZD%=  1
  716. 16360 GOSUB *VIL_VWM_CLALL
  717. 16370 RETURN
  718. 16380 '
  719. 16390 GOSUB *VIL_VWM_CLS
  720. 16400 CIRCLE((VIL_WIN_W%-VIL_WIN_X%)\2,(VIL_WIN_Z%-VIL_WIN_Y%)\2)                        ,(VIL_WIN_W%-VIL_WIN_X%)\2,1                                                 ,(VIL_WIN_Z%-VIL_WIN_Y%)/(VIL_WIN_W%-VIL_WIN_X%)
  721. 16410 A$="位置 ("+FNVIL_P2S0$(VIL_WIN_X%,3)+","                                               +FNVIL_P2S0$(VIL_WIN_Y%,3)+")"
  722. 16420 SYMBOL(8, 8),A$,1,1,6
  723. 16430 A$="   -("+FNVIL_P2S0$(VIL_WIN_W%,3)+","                                               +FNVIL_P2S0$(VIL_WIN_Z%,3)+")"
  724. 16440 SYMBOL(8,28),A$,1,1,6
  725. 16450 A$="サイズ("+FNVIL_P2S0$(VIL_WIN_W%-VIL_WIN_X%+1,3)+","                                  +FNVIL_P2S0$(VIL_WIN_Z%-VIL_WIN_Y%+1,3)+")"
  726. 16460 SYMBOL(8,48),A$,1,1,6
  727. 16470 RETURN
  728. 16480 '
  729. 16490 '<<<<<<<<<<<<<<<<<<<<  ユーティリティ  >>>>>>>>>>>>>>>>>>>>
  730. 16500 *UTY
  731. 16510 CLS
  732. 16520 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8
  733. 16530                                                   'ウィンドウ枠幅設定
  734. 16540 PALETTE 7,[255,255,255]  'パレット(8 XOR 15)を白にする
  735. 16550 SCREEN 1,0,3,0
  736. 16560 VIL_WIN_X%=100:VIL_WIN_Y%=20:GOSUB *VIL_SYSCNF_M
  737. 16570 SCREEN 1,0,1,0
  738. 16580 RETURN
  739. 40030 *VIL_BAS_VER
  740. 40035 VIL_VER%=200
  741. 40040 RETURN
  742. 40070 *VIL_BEEP_INITM
  743. 40120 RETURN
  744. 40130 *VIL_BEEP_G
  745. 40170 FOR VIL_I%=1 TO 4:BEEP 363523,5,400:WAIT 5:NEXT
  746. 40175 RETURN
  747. 40185 *VIL_BEEP_B
  748. 40225 BEEP 363523,40,80:WAIT 40
  749. 40230 RETURN
  750. 40270 *VIL_WIN_INITM
  751. 40320 VIL_WIN_X%=0:VIL_WIN_Y%=0
  752. 40325 VIL_WIN_W%=0:VIL_WIN_Z%=0
  753. 40330 VIL_WIN_UB%=0:VIL_WIN_DB%=0
  754. 40335 VIL_WIN_LB%=0:VIL_WIN_RB%=0
  755. 40340 VIL_WIN_AN%=0
  756. 40345 VIL_WIN_PM%=0
  757. 40350 VIL_WIN_BFMAX&=VIL_W0&
  758. 40355 VIL_WIN_ANMAX%=VIL_W1%
  759. 40360 DIM VIL_WIN_BF%(VIL_W0&)
  760. 40365 DIM VIL_WIN_BFO&(VIL_W1%)
  761. 40370 DIM VIL_WIN_X%(VIL_W1%),VIL_WIN_Y%(VIL_W1%)
  762. 40375 DIM VIL_WIN_W%(VIL_W1%),VIL_WIN_Z%(VIL_W1%)
  763. 40385 VIL_WIN_X%(0)=0:VIL_WIN_Y%(0)=0
  764. 40390 VIL_WIN_W%(0)=639:VIL_WIN_Z%(0)=479
  765. 40400 RETURN
  766. 40410 *VIL_WIN_OP
  767. 40475 VIL_WIN_AN%=VIL_WIN_AN%+1
  768. 40480 VIL_WIN_X%(VIL_WIN_AN%)=VIL_WIN_X%:VIL_WIN_Y%(VIL_WIN_AN%)=VIL_WIN_Y%
  769. 40485 VIL_WIN_W%(VIL_WIN_AN%)=VIL_WIN_W%:VIL_WIN_Z%(VIL_WIN_AN%)=VIL_WIN_Z%
  770. 40490 VIL_WIN_BFO&(VIL_WIN_AN%)=VIL_WIN_BFO&(VIL_WIN_AN%-1)+INT((INT((VIL_WIN_W%-VIL_WIN_X%+VIL_WIN_LB%+VIL_WIN_RB%+8)/8)*(VIL_WIN_Z%-VIL_WIN_Y%+VIL_WIN_UB%+VIL_WIN_DB%+1)*4+1)/2)
  771. 40495 VIL_E%=0
  772. 40500 GET@A(VIL_WIN_X%-VIL_WIN_LB%,VIL_WIN_Y%-VIL_WIN_UB%)-(VIL_WIN_W%+VIL_WIN_RB%,VIL_WIN_Z%+VIL_WIN_DB%),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  773. 40505 IF VIL_E%THEN
  774. 40510 VIL_WIN_AN%=VIL_WIN_AN%-1
  775. 40515 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  776. 40520 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  777. 40525 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  778. 40530 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  779. 40535 ENDIF
  780. 40540 RETURN
  781. 40550 *VIL_WIN_CL
  782. 40600 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-VIL_WIN_LB%,VIL_WIN_Y%(VIL_WIN_AN%)-VIL_WIN_UB%)-(VIL_WIN_W%(VIL_WIN_AN%)+VIL_WIN_RB%,VIL_WIN_Z%(VIL_WIN_AN%)+VIL_WIN_DB%),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  783. 40605 VIL_WIN_AN%=VIL_WIN_AN%-1
  784. 40610 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  785. 40615 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  786. 40620 RETURN
  787. 40630 *VIL_WIN_CLDMY
  788. 40680 VIL_WIN_AN%=VIL_WIN_AN%-1
  789. 40685 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  790. 40690 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  791. 40695 RETURN
  792. 40705 *VIL_WIN_CLALL
  793. 40755 WHILE VIL_WIN_AN%
  794. 40760 GOSUB*VIL_WIN_CL
  795. 40765 WEND
  796. 40770 RETURN
  797. 40780 *VIL_WIN_PMR
  798. 40820 VIL_WIN_PM%=-1
  799. 40825 VIEW(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%)
  800. 40830 WINDOW(0,0)-(VIL_WIN_W%-VIL_WIN_X%,VIL_WIN_Z%-VIL_WIN_Y%)
  801. 40835 RETURN
  802. 40845 *VIL_WIN_PMA
  803. 40885 VIL_WIN_PM%=0
  804. 40890 VIEW(0,0)-(639,479)
  805. 40895 WINDOW(0,0)-(639,479)
  806. 40900 RETURN
  807. 40930 *VIL_MSEL_INITM
  808. 40980 VIL_MSEL_MN%=0
  809. 40985 VIL_MSEL_BB%=1
  810. 40990 VIL_MSEL_BE%=9
  811. 40995 VIL_MSEL_BN%=0
  812. 41000 VIL_MSEL_BC%=0
  813. 41005 VIL_MSEL_BD%=0
  814. 41030 VIL_MSEL_KY%=0
  815. 41070 DIM VIL_MSEL_X%(VIL_W1%),VIL_MSEL_Y%(VIL_W1%)
  816. 41075 DIM VIL_MSEL_W%(VIL_W1%),VIL_MSEL_Z%(VIL_W1%)
  817. 41080 DIM VIL_MSEL_BN%(VIL_W0%)
  818. 41085 DIM VIL_MSEL_KB%(127)
  819. 41095 RESTORE 41125
  820. 41100 FOR VIL_I%=0 TO 127
  821. 41105 READ VIL_MSEL_KB%(VIL_I%)
  822. 41110 NEXT
  823. 41125 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-11,-3,-2,-3,-3:
  824. 41130 DATA-3,-3,-3,-3,-3,-3,-10,-9,-1,-3,-3,-3,-5,-6,-7,-8:
  825. 41135 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,10,12,-1,13,15,11:
  826. 41140 DATA 0,1,2,3,4,5,6,7,8,9,-3,-3,-3,14,-3,-3:
  827. 41145 DATA-3,10,11,12,13,14,15,-3,-3,-3,-3,-3,-3,-3,-3,-3:
  828. 41150 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3:
  829. 41155 DATA-3,10,11,12,13,14,15,-3,-3,-3,-3,-3,-3,-3,-3,-3:
  830. 41160 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-12:
  831. 41190 MOUSE 0:MOUSE 1,320,240,0
  832. 41195 RETURN
  833. 41205 *VIL_MSEL_M
  834. 41405 GOSUB*VIL_MSEL_BCMK
  835. 41410 GOSUB*VIL_MSEL_IN
  836. 41415 RETURN
  837. 41425 *VIL_MSEL_BCMK
  838. 41530 IF VIL_MSEL_BD%AND 2 THEN VIL_W1%=-1 ELSE VIL_W1%=1
  839. 41535 IF VIL_MSEL_BD%AND 4 THEN VIL_W2%=-1 ELSE VIL_W2%=1
  840. 41540 FOR VIL_I%=1 TO VIL_YN%
  841. 41545 FOR VIL_J%=1 TO VIL_XN%
  842. 41550 IF VIL_MSEL_BD%AND 1 THEN
  843. 41555 VIL_W0%=(VIL_J%-1)*VIL_YN%+VIL_I%-1+VIL_MSEL_BB%
  844. 41560 ELSE
  845. 41565 VIL_W0%=(VIL_I%-1)*VIL_XN%+VIL_J%-1+VIL_MSEL_BB%
  846. 41570 ENDIF
  847. 41575 VIL_MSEL_X%(VIL_W0%)=VIL_X%+(VIL_J%-1)*VIL_XL%*VIL_W1%
  848. 41580 VIL_MSEL_Y%(VIL_W0%)=VIL_Y%+(VIL_I%-1)*VIL_YL%*VIL_W2%
  849. 41585 VIL_MSEL_W%(VIL_W0%)=VIL_W%+(VIL_J%-1)*VIL_XL%*VIL_W1%
  850. 41590 VIL_MSEL_Z%(VIL_W0%)=VIL_Z%+(VIL_I%-1)*VIL_YL%*VIL_W2%
  851. 41595 NEXT
  852. 41600 NEXT
  853. 41605 RETURN
  854. 41615 *VIL_MSEL_IN
  855. 41815 VIL_W4%=MOUSE(3,0)+MOUSE(3,1)
  856. 41820 VIL_W0%=-5:VIL_W1%=-6:VIL_W2%=-7:VIL_W3%=-8
  857. 41825 IF VIL_MSEL_BD%AND 2 THEN SWAP VIL_W0%,VIL_W1%
  858. 41830 IF VIL_MSEL_BD%AND 4 THEN SWAP VIL_W2%,VIL_W3%
  859. 41835 IF VIL_MSEL_BD%AND 1 THEN SWAP VIL_W0%,VIL_W3%:SWAP VIL_W1%,VIL_W2%
  860. 41855 MOUSE 1,,,1
  861. 41860 IF VIL_MSEL_MN%THEN VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%)
  862. 41865 IF VIL_MSEL_BN%<VIL_MSEL_BB%OR VIL_MSEL_BE%<VIL_MSEL_BN%THEN VIL_MSEL_BN%=VIL_MSEL_BB%
  863. 41870 IF VIL_MSEL_BC%=0 THEN GOSUB*VIL_MSEL_BC
  864. 41880 GOSUB*VIL_MSEL_KY
  865. 41890 IF MOUSE(3,1)OR VIL_MSEL_KY%=-1 THEN
  866. 41895 VIL_W4%=MOUSE(3,0)
  867. 41900 VIL_KN%=-1
  868. 41905 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN
  869. 41910 VIL_KN%=-2
  870. 41915 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  871. 41920 IF VIL_WIN_PM%THEN
  872. 41925 IF VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN
  873. 41935 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y%
  874. 41940 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1
  875. 41945 IF VIL_MSEL_X%(VIL_I%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_I%)THEN
  876. 41950 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN%
  877. 41955 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_J%)THEN
  878. 41960 VIL_KN%=VIL_J%
  879. 41965 GOSUB*VIL_MSEL_BC
  880. 41970 VIL_MSEL_BN%=VIL_KN%
  881. 41975 GOSUB*VIL_MSEL_BC
  882. 41980 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  883. 41985 ENDIF
  884. 41990 NEXT
  885. 41995 ENDIF
  886. 42000 NEXT
  887. 42005 ENDIF
  888. 42010 ELSE
  889. 42015 VIL_MW%=-1
  890. 42020 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1
  891. 42025 IF VIL_MSEL_X%(VIL_I%)=<VIL_MX%AND VIL_MX%=<VIL_MSEL_W%(VIL_I%)THEN
  892. 42030 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN%
  893. 42035 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MY%AND VIL_MY%=<VIL_MSEL_Z%(VIL_J%)THEN
  894. 42040 VIL_KN%=VIL_J%
  895. 42045 GOSUB*VIL_MSEL_BC
  896. 42050 VIL_MSEL_BN%=VIL_KN%
  897. 42055 GOSUB*VIL_MSEL_BC
  898. 42060 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  899. 42065 ENDIF
  900. 42070 NEXT
  901. 42075 ENDIF
  902. 42080 NEXT
  903. 42085 ENDIF
  904. 42090 ELSE
  905. 42095 IF VIL_MSEL_KY%=-4 THEN
  906. 42100 GOTO 41880
  907. 42105 ELSE IF VIL_MSEL_BB%<=VIL_MSEL_KY%AND VIL_MSEL_KY%<=VIL_MSEL_BE%THEN
  908. 42115 VIL_KN%=VIL_MSEL_KY%
  909. 42120 GOSUB*VIL_MSEL_BC:VIL_MSEL_BN%=VIL_KN%:GOSUB*VIL_MSEL_BC
  910. 42125 ELSE IF VIL_MSEL_KY%=-2 THEN
  911. 42130 VIL_KN%=VIL_MSEL_BN%
  912. 42135 ELSE IF-8<=VIL_MSEL_KY%AND VIL_MSEL_KY%<=-5 THEN
  913. 42140 GOSUB*VIL_MSEL_BC
  914. 42145 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_MSEL_KY%=VIL_W0%)+(VIL_MSEL_KY%=VIL_W1%)+((VIL_MSEL_KY%=VIL_W2%)-(VIL_MSEL_KY%=VIL_W3%))*VIL_XN%
  915. 42150 VIL_MSEL_BN%=VIL_MSEL_BN%+(VIL_MSEL_KY%=VIL_W0%AND(VIL_MSEL_BN%MOD VIL_XN%)=1)*VIL_XN%
  916. 42155 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_MSEL_KY%=VIL_W1%AND((VIL_MSEL_BN%+1)MOD VIL_XN%)=1)*VIL_XN%
  917. 42160 VIL_MSEL_BN%=VIL_MSEL_BN%-((VIL_MSEL_BN%<VIL_MSEL_BB%)-(VIL_MSEL_BN%>VIL_MSEL_BE%))*(VIL_MSEL_BE%-VIL_MSEL_BB%+1)
  918. 42165 GOSUB*VIL_MSEL_BC
  919. 42170 GOTO 41880
  920. 42175 ELSE
  921. 42180 VIL_KN%=-3
  922. 42185 ENDIF
  923. 42190 ENDIF
  924. 42200 VIL_MSEL_BN%(VIL_MSEL_MN%)=VIL_MSEL_BN%
  925. 42205 MOUSE 1,,,0
  926. 42210 VIL_MSEL_BC%=-1
  927. 42215 RETURN
  928. 42225 *VIL_MSEL_BC
  929. 42265 LINE(VIL_MSEL_X%(VIL_MSEL_BN%),VIL_MSEL_Y%(VIL_MSEL_BN%))-(VIL_MSEL_W%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%)),XOR,%VIL_C%,B
  930. 42270 RETURN
  931. 42280 *VIL_MSEL_KY
  932. 42340 VIL_K$=INKEY$
  933. 42345 IF VIL_K$<>""THEN VIL_KY%=ASC(VIL_K$):VIL_MSEL_KY%=VIL_MSEL_KB%(VIL_KY%)ELSE VIL_KY%=0:VIL_MSEL_KY%=-4
  934. 42350 RETURN
  935. 42380 *VIL_INP_INITM
  936. 42425 VIL_INP_L%=0:VIL_INP_CX%=0
  937. 42435 MOUSE 0:MOUSE 1,320,240,0
  938. 42440 RETURN
  939. 42450 *VIL_INP_STR
  940. 42565 VIL_INP_L%=LEN(VIL_A$):VIL_INP_CX%=VIL_INP_L%
  941. 42570 MOUSE 1,,,1
  942. 42580 GOSUB*VIL_INP_GPRINT
  943. 42585 GOSUB 42805
  944. 42595 VIL_K$=INKEY$
  945. 42600 IF VIL_K$<>""THEN VIL_KY%=ASC(VIL_K$)ELSE VIL_KY%=0
  946. 42610 IF MOUSE(3,1)OR VIL_KY%=24 THEN
  947. 42615 VIL_KN%=-1
  948. 42620 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN
  949. 42625 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  950. 42630 IF VIL_WIN_PM%THEN
  951. 42635 IF VIL_WIN_PM%AND VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN
  952. 42640 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y%
  953. 42645 ELSE
  954. 42650 VIL_MW%=-1
  955. 42655 ENDIF
  956. 42660 ENDIF
  957. 42665 VIL_KN%=-2
  958. 42670 ELSE IF VIL_KY%=13 THEN
  959. 42675 VIL_KN%=0
  960. 42680 ELSE
  961. 42685 IF VIL_KY%=0 THEN 42595
  962. 42690 GOSUB 42805
  963. 42695 IF VIL_KY%=29 AND VIL_INP_CX%>0 THEN VIL_INP_CX%=VIL_INP_CX%-1:GOTO 42585
  964. 42700 IF VIL_KY%=28 AND VIL_INP_CX%<VIL_INP_L%THEN VIL_INP_CX%=VIL_INP_CX%+1:GOTO 42585
  965. 42705 IF VIL_KY%>=32 AND VIL_KY%<>127 AND VIL_INP_L%<VIL_L%THEN
  966. 42715 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+VIL_K$+MID$(VIL_A$,VIL_INP_CX%+1)
  967. 42720 VIL_INP_L%=VIL_INP_L%+1:VIL_INP_CX%=VIL_INP_CX%+1
  968. 42725 ELSE IF VIL_KY%=8 AND VIL_INP_CX%>0 THEN
  969. 42730 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%-1)+MID$(VIL_A$,VIL_INP_CX%+1)
  970. 42735 VIL_INP_L%=VIL_INP_L%-1:VIL_INP_CX%=VIL_INP_CX%-1
  971. 42740 ELSE IF VIL_KY%=127 AND VIL_INP_CX%<VIL_INP_L%THEN
  972. 42745 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+MID$(VIL_A$,VIL_INP_CX%+2)
  973. 42750 VIL_INP_L%=VIL_INP_L%-1
  974. 42755 ELSE IF VIL_KY%=11 THEN
  975. 42760 VIL_A$="":VIL_INP_L%=0:VIL_INP_CX%=0
  976. 42765 ENDIF
  977. 42770 GOTO 42580
  978. 42775 ENDIF
  979. 42780 MOUSE 1,,,0
  980. 42785 GOSUB 42805
  981. 42790 RETURN
  982. 42805 LINE(VIL_X%+VIL_INP_CX%*8,VIL_Y%+17)-(VIL_X%+VIL_INP_CX%*8+7,VIL_Y%+17),XOR,%VIL_C%
  983. 42810 RETURN
  984. 42820 *VIL_INP_GPRINT
  985. 42880 LINE(VIL_X%,VIL_Y%)-(VIL_X%+VIL_L%*8-1,VIL_Y%+15),PSET,%VIL_CB%,BF
  986. 42885 SYMBOL(VIL_X%,VIL_Y%),VIL_A$,1,1,%VIL_C%
  987. 42890 RETURN
  988. 42900 *VIL_INP_MVWAIT
  989. 42940 VIL_W0%=MOUSE(9)+MOUSE(10):VIL_W0$=INKEY$
  990. 42945 WHILE ABS(MOUSE(9))<10 AND ABS(MOUSE(10))<10 AND MOUSE(2,0)+MOUSE(2,1)=0 AND INKEY$="":WEND
  991. 42950 RETURN
  992. 45024 *VIL_VWM_VER
  993. 45028 VIL_VER%=200
  994. 45032 RETURN
  995. 45064 *VIL_VWM_INITM
  996. 45124 VIL_VWM_AT%=0
  997. 45164 VIL_VWM_T$=""
  998. 45168 VIL_VWM_ATB%=0:VIL_VWM_PMB%=0
  999. 45172 VIL_VWM_WX%=0:VIL_VWM_WY%=0
  1000. 45176 VIL_VWM_XM%=8:VIL_VWM_YM%=14
  1001. 45180 VIL_VWM_WM%=631:VIL_VWM_ZM%=471
  1002. 45184 VIL_VWM_XL%=32:VIL_VWM_YL%=8
  1003. 45188 VIL_VWM_WL%=624:VIL_VWM_ZL%=458
  1004. 45192 VIL_VWM_XD%=1:VIL_VWM_YD%=1
  1005. 45196 VIL_VWM_WD%=1:VIL_VWM_ZD%=1
  1006. 45200 VIL_VWM_N%=0
  1007. 45204 VIL_VWM_R%=0
  1008. 45208 DIM VIL_VWM_X%(VIL_W0%),VIL_VWM_Y%(VIL_W0%)
  1009. 45212 DIM VIL_VWM_W%(VIL_W0%),VIL_VWM_Z%(VIL_W0%)
  1010. 45216 DIM VIL_VWM_AT%(VIL_WIN_ANMAX%)
  1011. 45220 DIM VIL_VWM_T$(VIL_WIN_ANMAX%)
  1012. 45224 DIM VIL_VWM_N%(VIL_WIN_ANMAX%)
  1013. 45228 VIL_VWM_CB%=VIL_W4%
  1014. 45232 VIL_VWM_MCX0%=1:VIL_VWM_MCY0%=2
  1015. 45236 VIL_VWM_MCA0$=CHR$(&H7F,&HFF,&H3F,&HFF,&H1F,&HFF,&H0F,&HFF,&H07,&HFF,&H03,&HFF,&H01,&HFF,&H00,&HFF,&H00,&H7F,&H00,&H3F,&H00,&H1F,&H00,&HFF,&H00,&HFF,&H18,&H7F,&H38,&H7F,&HFC,&H7F)
  1016. 45240 VIL_VWM_MCD0$=CHR$(&H00,&H00,&H00,&H00,&H40,&H00,&H20,&H00,&H50,&H00,&H38,&H00,&H5C,&H00,&H2E,&H00,&H5F,&H00,&H2F,&H80,&H5E,&H00,&H26,&H00,&H42,&H00,&H03,&H00,&H01,&H00,&H00,&H00)
  1017. 45244 VIL_VWM_MCX1%=7:VIL_VWM_MCY1%=9
  1018. 45248 VIL_VWM_MCA1$=CHR$(&HFE,&H7F,&HF0,&H0F,&HE0,&H07,&HE0,&H01,&H80,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H80,&H00,&H80,&H00,&HC0,&H01,&HC0,&H01,&HE0,&H03,&HF0,&H07,&HFC,&H1F)
  1019. 45252 VIL_VWM_MCD1$=CHR$(&H00,&H00,&H01,&H80,&H0D,&HB0,&H0D,&HB0,&H0D,&HB6,&H6D,&HB6,&H6F,&HF6,&H7F,&HFE,&H7F,&HFE,&H3F,&HFE,&H3F,&HFE,&H1F,&HFC,&H1F,&HFC,&H0F,&HF8,&H03,&HE0,&H00,&H00)
  1020. 45256 VIL_VWM_MCX2%=2:VIL_VWM_MCY2%=12
  1021. 45260 VIL_VWM_MCA2$=CHR$(&HFF,&HE7,&HFF,&H83,&HFE,&H01,&HF8,&H01,&HE0,&H21,&HC0,&H63,&H81,&HC3,&H07,&HC7,&H0F,&H87,&H0F,&H8F,&H0F,&H0F,&H9F,&H1F,&HF0,&H1F,&HE0,&H3F,&HF0,&H7F,&HF0,&HFF)
  1022. 45264 VIL_VWM_MCD2$=CHR$(&H00,&H00,&H00,&H18,&H00,&H7C,&H01,&H8C,&H06,&H08,&H18,&H08,&H20,&H10,&H40,&H10,&H40,&H20,&H40,&H20,&H40,&H40,&H00,&H40,&H00,&H80,&H0F,&H00,&H00,&H00,&H00,&H00)
  1023. 45272 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8
  1024. 45284 PALETTE 1,[VIL_W1%-80+(VIL_W1%<80)*(VIL_W1%-80),VIL_W2%-80+(VIL_W2%<80)*(VIL_W2%-80),VIL_W3%-80+(VIL_W3%<80)*(VIL_W3%-80)],1
  1025. 45288 PALETTE 2,[VIL_W1%,VIL_W2%,VIL_W3%],1
  1026. 45292 PALETTE 3,[VIL_W1%+80+(255<VIL_W1%)*(VIL_W1%-255),VIL_W2%+80+(255<VIL_W2%)*(VIL_W2%-255),VIL_W3%+80+(255<VIL_W3%)*(VIL_W3%-255)],1
  1027. 45296 PALETTE VIL_VWM_CB%,[VIL_W5%,VIL_W6%,VIL_W7%],1
  1028. 45300 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
  1029. 45308 RETURN
  1030. 45316 *VIL_VWM_OP
  1031. 45448 GOSUB*VIL_WIN_PMA
  1032. 45452 IF VIL_WIN_AN%THEN
  1033. 45456 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF
  1034. 45460 ENDIF
  1035. 45464 IF VIL_VWM_N%THEN
  1036. 45468 VIL_WIN_X%=VIL_VWM_X%(VIL_VWM_N%):VIL_WIN_Y%=VIL_VWM_Y%(VIL_VWM_N%)
  1037. 45472 VIL_WIN_W%=VIL_VWM_W%(VIL_VWM_N%):VIL_WIN_Z%=VIL_VWM_Z%(VIL_VWM_N%)
  1038. 45476 ENDIF
  1039. 45480 GOSUB*VIL_WIN_OP
  1040. 45484 IF VIL_E%THEN
  1041. 45488 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF
  1042. 45492 ELSE
  1043. 45496 VIL_VWM_AT%(VIL_WIN_AN%)=VIL_VWM_AT%
  1044. 45500 VIL_VWM_T$(VIL_WIN_AN%)=VIL_VWM_T$
  1045. 45504 VIL_VWM_N%(VIL_WIN_AN%)=VIL_VWM_N%
  1046. 45512 LINE(VIL_WIN_X%-8,VIL_WIN_Y%-14)-(VIL_WIN_W%+8,VIL_WIN_Z%+8),PSET,%VIL_VWM_CB%,BF
  1047. 45520 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-11)-(VIL_WIN_W%+5,VIL_WIN_Y%-3),PSET,%2,BF
  1048. 45524 LINE(VIL_WIN_X%-5,VIL_WIN_Z%+3)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,%2,BF
  1049. 45528 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-2)-(VIL_WIN_X%-1,VIL_WIN_Z%+2),PSET,%2,BF
  1050. 45532 LINE(VIL_WIN_W%+1,VIL_WIN_Y%-2)-(VIL_WIN_W%+5,VIL_WIN_Z%+2),PSET,%2,BF
  1051. 45540 CONNECT(VIL_WIN_W%+7,VIL_WIN_Y%-13)-(VIL_WIN_X%-7,VIL_WIN_Y%-13)-(VIL_WIN_X%-7,VIL_WIN_Z%+7),%3
  1052. 45544 CONNECT(VIL_WIN_W%+6,VIL_WIN_Y%-12)-(VIL_WIN_X%-6,VIL_WIN_Y%-12)-(VIL_WIN_X%-6,VIL_WIN_Z%+6),%3
  1053. 45548 CONNECT(VIL_WIN_X%-6,VIL_WIN_Z%+7)-(VIL_WIN_W%+7,VIL_WIN_Z%+7)-(VIL_WIN_W%+7,VIL_WIN_Y%-12),%1
  1054. 45552 CONNECT(VIL_WIN_X%-5,VIL_WIN_Z%+6)-(VIL_WIN_W%+6,VIL_WIN_Z%+6)-(VIL_WIN_W%+6,VIL_WIN_Y%-11),%1
  1055. 45560 CONNECT(VIL_WIN_W%+1,VIL_WIN_Y%-2)-(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_X%-2,VIL_WIN_Z%+1),%1
  1056. 45564 CONNECT(VIL_WIN_W%,VIL_WIN_Y%-1)-(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_X%-1,VIL_WIN_Z%),%1
  1057. 45568 CONNECT(VIL_WIN_X%-2,VIL_WIN_Z%+2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2)-(VIL_WIN_W%+2,VIL_WIN_Y%-2),%3
  1058. 45572 CONNECT(VIL_WIN_X%-1,VIL_WIN_Z%+1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1)-(VIL_WIN_W%+1,VIL_WIN_Y%-1),%3
  1059. 45580 IF(VIL_VWM_AT%AND 2)=2 THEN
  1060. 45584 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-11)-(VIL_WIN_X%+3,VIL_WIN_Y%-3),PSET,%1,B
  1061. 45588 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-11)-(VIL_WIN_X%+3,VIL_WIN_Y%-3),PSET,%1
  1062. 45592 LINE(VIL_WIN_X%+3,VIL_WIN_Y%-11)-(VIL_WIN_X%-5,VIL_WIN_Y%-3),PSET,%1
  1063. 45596 ENDIF
  1064. 45604 IF(VIL_VWM_AT%AND 4)=4 THEN
  1065. 45608 LINE(VIL_WIN_X%+5,VIL_WIN_Y%-11)-(VIL_WIN_X%+13,VIL_WIN_Y%-3),PSET,%1,B
  1066. 45612 LINE(VIL_WIN_X%+13,VIL_WIN_Y%-11)-(VIL_WIN_X%+5,VIL_WIN_Y%-3),PSET,%1
  1067. 45616 ENDIF
  1068. 45624 IF(VIL_VWM_AT%AND 1)=1 THEN
  1069. 45628 LINE(VIL_WIN_W%-13,VIL_WIN_Y%-11)-(VIL_WIN_W%-5,VIL_WIN_Y%-3),PSET,%1,B
  1070. 45632 LINE(VIL_WIN_W%-13,VIL_WIN_Y%-8)-(VIL_WIN_W%-5,VIL_WIN_Y%-8),PSET,%1
  1071. 45636 LINE(VIL_WIN_W%-13,VIL_WIN_Y%-6)-(VIL_WIN_W%-5,VIL_WIN_Y%-6),PSET,%1
  1072. 45640 ENDIF
  1073. 45648 IF(VIL_VWM_AT%AND 16)=16 THEN
  1074. 45652 LINE(VIL_WIN_W%-3,VIL_WIN_Y%-11)-(VIL_WIN_W%+5,VIL_WIN_Y%-3),PSET,%1,B
  1075. 45656 LINE(VIL_WIN_W%-3,VIL_WIN_Y%-8)-(VIL_WIN_W%+2,VIL_WIN_Y%-3),PSET,%1,B
  1076. 45660 ENDIF
  1077. 45668 VIL_W0%=INT(VIL_WIN_W%-VIL_WIN_X%-36)/5
  1078. 45672 IF VIL_W0%>0 THEN
  1079. 45676 SYMBOL(VIL_WIN_X%+18,VIL_WIN_Y%-10),LEFT$(VIL_VWM_T$,VIL_W0%),.5!,.5!,%1,,,,1
  1080. 45680 ENDIF
  1081. 45688 LINE(VIL_WIN_X%+16,VIL_WIN_Y%-11)-(VIL_WIN_W%-16,VIL_WIN_Y%-4),XOR,%3,BF
  1082. 45692 ENDIF
  1083. 45700 GOSUB*VIL_WIN_PMR
  1084. 45704 RETURN
  1085. 45712 *VIL_VWM_CL
  1086. 45788 IF VIL_VWM_N%THEN
  1087. 45792 VIL_VWM_X%(VIL_VWM_N%)=VIL_WIN_X%:VIL_VWM_Y%(VIL_VWM_N%)=VIL_WIN_Y%
  1088. 45796 VIL_VWM_W%(VIL_VWM_N%)=VIL_WIN_W%:VIL_VWM_Z%(VIL_VWM_N%)=VIL_WIN_Z%
  1089. 45800 ENDIF
  1090. 45804 GOSUB*VIL_WIN_PMA
  1091. 45808 GOSUB*VIL_WIN_CL
  1092. 45812 VIL_VWM_AT%=VIL_VWM_AT%(VIL_WIN_AN%)
  1093. 45816 VIL_VWM_T$=VIL_VWM_T$(VIL_WIN_AN%)
  1094. 45820 VIL_VWM_N%=VIL_VWM_N%(VIL_WIN_AN%)
  1095. 45824 IF VIL_WIN_AN%THEN
  1096. 45828 LINE(VIL_WIN_X%+16,VIL_WIN_Y%-11)-(VIL_WIN_W%-16,VIL_WIN_Y%-4),XOR,%3,BF
  1097. 45832 ENDIF
  1098. 45836 GOSUB*VIL_WIN_PMR
  1099. 45840 RETURN
  1100. 45848 *VIL_VWM_CLDMY
  1101. 45924 IF VIL_VWM_N%THEN
  1102. 45928 VIL_VWM_X%(VIL_VWM_N%)=VIL_WIN_X%:VIL_VWM_Y%(VIL_VWM_N%)=VIL_WIN_Y%
  1103. 45932 VIL_VWM_W%(VIL_VWM_N%)=VIL_WIN_W%:VIL_VWM_Z%(VIL_VWM_N%)=VIL_WIN_Z%
  1104. 45936 ENDIF
  1105. 45940 GOSUB*VIL_WIN_PMA
  1106. 45944 GOSUB*VIL_WIN_CLDMY
  1107. 45948 LINE(VIL_WIN_X%(VIL_WIN_AN%+1)+16,VIL_WIN_Y%(VIL_WIN_AN%+1)-11)-(VIL_WIN_W%(VIL_WIN_AN%+1)-16,VIL_WIN_Y%(VIL_WIN_AN%+1)-4),XOR,%3,BF
  1108. 45952 VIL_VWM_AT%=VIL_VWM_AT%(VIL_WIN_AN%)
  1109. 45956 VIL_VWM_T$=VIL_VWM_T$(VIL_WIN_AN%)
  1110. 45960 VIL_VWM_N%=VIL_VWM_N%(VIL_WIN_AN%)
  1111. 45964 IF VIL_WIN_AN%THEN
  1112. 45968 LINE(VIL_WIN_X%+16,VIL_WIN_Y%-11)-(VIL_WIN_W%-16,VIL_WIN_Y%-4),XOR,%3,BF
  1113. 45972 ENDIF
  1114. 45976 GOSUB*VIL_WIN_PMR
  1115. 45980 RETURN
  1116. 45988 *VIL_VWM_CLALL
  1117. 46020 WHILE VIL_WIN_AN%
  1118. 46024 GOSUB*VIL_VWM_CL
  1119. 46028 WEND
  1120. 46032 RETURN
  1121. 46040 *VIL_VWM_CLS
  1122. 46068 LINE(0,0)-(VIL_WIN_W%-VIL_WIN_X%,VIL_WIN_Z%-VIL_WIN_Y%),PSET,%VIL_VWM_CB%,BF
  1123. 46072 RETURN
  1124. 46080 *VIL_VWM_CHECK
  1125. 46148 VIL_VWM_R%=0
  1126. 46152 IF VIL_KN%=-2 THEN
  1127. 46156 GOSUB*VIL_VWM_WIN
  1128. 46160 ELSE IF VIL_KN%=-3 AND VIL_KY%=27 THEN
  1129. 46164 VIL_WIN_X%=VIL_WIN_W%+(VIL_WIN_W%-582)*(VIL_WIN_W%>582)
  1130. 46168 VIL_WIN_Y%=VIL_WIN_Y%-32+(VIL_WIN_Y%-46)*(VIL_WIN_Y%<46)+(VIL_WIN_Y%-406)*(VIL_WIN_Y%>406)
  1131. 46176 GOSUB*VIL_VWM_MENU
  1132. 46180 ENDIF
  1133. 46184 RETURN
  1134. 46192 *VIL_VWM_WIN
  1135. 46240 VIL_VWM_R%=0
  1136. 46244 IF(VIL_VWM_AT%AND 2)=2 AND VIL_WIN_X%-6<VIL_MX%AND VIL_MX%<VIL_WIN_X%+4 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN
  1137. 46248 GOSUB*VIL_VWM_CLOSE
  1138. 46252 ELSE IF(VIL_VWM_AT%AND 4)=4 AND VIL_WIN_X%+4<VIL_MX%AND VIL_MX%<VIL_WIN_X%+14 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN
  1139. 46256 GOSUB*VIL_VWM_HIDE
  1140. 46260 ELSE IF(VIL_VWM_AT%AND 1)=1 AND VIL_WIN_W%-14<VIL_MX%AND VIL_MX%<VIL_WIN_W%-4 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN
  1141. 46264 VIL_WIN_X%=VIL_WIN_W%+(VIL_WIN_W%-582)*(VIL_WIN_W%>582)
  1142. 46268 VIL_WIN_Y%=VIL_WIN_Y%-32+(VIL_WIN_Y%-46)*(VIL_WIN_Y%<46)+(VIL_WIN_Y%-406)*(VIL_WIN_Y%>406)
  1143. 46276 GOSUB*VIL_VWM_MENU
  1144. 46280 ELSE IF(VIL_VWM_AT%AND 16)=16 AND VIL_WIN_W%-4<VIL_MX%AND VIL_MX%<VIL_WIN_W%+6 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN
  1145. 46284 GOSUB*VIL_VWM_RESIZE
  1146. 46288 ELSE IF(VIL_VWM_AT%AND 8)=8 AND VIL_WIN_X%-6<VIL_MX%AND VIL_MX%<VIL_WIN_W%+6 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN
  1147. 46292 GOSUB*VIL_VWM_MOVE
  1148. 46296 ENDIF
  1149. 46300 RETURN
  1150. 46308 *VIL_VWM_MENU
  1151. 46372 GOSUB*VIL_WIN_PMA
  1152. 46376 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF
  1153. 46380 VIL_VWM_ATB%=VIL_VWM_AT%
  1154. 46384 VIL_WIN_W%=VIL_WIN_X%+49:VIL_WIN_Z%=VIL_WIN_Y%+97
  1155. 46388 VIL_VWM_T$="VWM":VIL_VWM_AT%=0:VIL_VWM_N%=0
  1156. 46392 GOSUB*VIL_VWM_OP
  1157. 46396 SYMBOL(5,0),"<VWM>",1,1,6
  1158. 46400 SYMBOL(1,20),"CLOSE",1,1,%1-((VIL_VWM_ATB%AND 2)=2)*2
  1159. 46404 SYMBOL(1,36),"HIDE",1,1,%1-((VIL_VWM_ATB%AND 4)=4)*2
  1160. 46408 SYMBOL(1,52),"MOVE",1,1,%1-((VIL_VWM_ATB%AND 8)=8)*2
  1161. 46412 SYMBOL(1,68),"RESIZE",1,1,%1-((VIL_VWM_ATB%AND 16)=16)*2
  1162. 46416 SYMBOL(1,84),"<INFO>",1,1,%3
  1163. 46424 VIL_X%=1:VIL_Y%=20:VIL_W%=VIL_X%+47:VIL_Z%=VIL_Y%+14
  1164. 46428 VIL_YL%=16:VIL_XN%=1:VIL_YN%=5:VIL_MSEL_BD%=0:VIL_C%=15
  1165. 46432 VIL_MSEL_BC%=0:VIL_MSEL_MN%=1:VIL_MSEL_BB%=1:VIL_MSEL_BE%=5
  1166. 46436 GOSUB*VIL_MSEL_M
  1167. 46440 IF VIL_KN%=-3 OR(0<VIL_KN%AND VIL_KN%<5 AND(VIL_VWM_ATB%AND 2^VIL_KN%)=0)              THEN 46436
  1168. 46444 GOSUB*VIL_VWM_CL
  1169. 46448 GOSUB*VIL_WIN_PMA
  1170. 46452 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF
  1171. 46456 GOSUB*VIL_WIN_PMR
  1172. 46460 IF VIL_KN%<1 THEN RETURN
  1173. 46468 ON VIL_KN%GOTO 46476,46488,46500,46536,46572
  1174. 46476 GOSUB*VIL_VWM_CLOSE
  1175. 46480 RETURN
  1176. 46488 IF VIL_KY%THEN GOSUB*VIL_VWM_KHIDE ELSE GOSUB*VIL_VWM_HIDE
  1177. 46492 RETURN
  1178. 46500 IF VIL_KY%THEN
  1179. 46504 GOSUB*VIL_VWM_KMOVE
  1180. 46508 ELSE
  1181. 46512 VIL_MX%=(VIL_WIN_X%+VIL_WIN_W%)\2:VIL_MY%=VIL_WIN_Y%-4
  1182. 46516 MOUSE 1,VIL_MX%,VIL_MY%
  1183. 46520 GOSUB*VIL_VWM_MOVE
  1184. 46524 ENDIF
  1185. 46528 RETURN
  1186. 46536 IF VIL_KY%THEN
  1187. 46540 GOSUB*VIL_VWM_KRESIZE
  1188. 46544 ELSE
  1189. 46548 VIL_MX%=VIL_WIN_W%:VIL_MY%=VIL_WIN_Y%-6
  1190. 46552 MOUSE 1,VIL_MX%,VIL_MY%
  1191. 46556 GOSUB*VIL_VWM_RESIZE
  1192. 46560 ENDIF
  1193. 46564 RETURN
  1194. 46572 VIL_WIN_X%=VIL_WIN_X%+(VIL_WIN_X%-448)*(VIL_WIN_X%>448)
  1195. 46576 VIL_WIN_Y%=VIL_WIN_Y%+(VIL_WIN_Y%-380)*(VIL_WIN_Y%>380)
  1196. 46580 GOSUB*VIL_VWM_INF
  1197. 46584 RETURN
  1198. 46592 *VIL_VWM_INF
  1199. 46624 VIL_WIN_W%=VIL_WIN_X%+183:VIL_WIN_Z%=VIL_WIN_Y%+91
  1200. 46628 VIL_VWM_T$="VWM INFORMATION":VIL_VWM_AT%=0:VIL_VWM_N%=0
  1201. 46632 VIL_E%=0
  1202. 46636 GOSUB*VIL_VWM_OP
  1203. 46640 IF VIL_E%=0 THEN
  1204. 46648 SYMBOL(8,8),"POSITION:("+FNVIL_P2S0$(VIL_WIN_X%(VIL_WIN_AN%-1),3)+","+FNVIL_P2S0$(VIL_WIN_Y%(VIL_WIN_AN%-1),3)+")",1,1,4
  1205. 46656 SYMBOL(8,28),"SIZE    : "+FNVIL_P2S0$(VIL_WIN_W%(VIL_WIN_AN%-1)-VIL_WIN_X%(VIL_WIN_AN%-1)+1,3)+"×"+FNVIL_P2S0$(VIL_WIN_Z%(VIL_WIN_AN%-1)-VIL_WIN_Y%(VIL_WIN_AN%-1)+1,3),1,1,4
  1206. 46664 SYMBOL(8,48),"WINDOW  : "+FNVIL_P2S0$(VIL_WIN_AN%-1,3)+"/"+FNVIL_P2S0$(VIL_WIN_ANMAX%,3),1,1,4
  1207. 46672 SYMBOL(8,68),"FREE    : "+FNVIL_P2S0$((VIL_WIN_BFMAX&-VIL_WIN_BFO&(VIL_WIN_AN%-1))\512,4)+"K/"+FNVIL_P2S0$(VIL_WIN_BFMAX&\512,4)+"K",1,1,4
  1208. 46676 GOSUB*VIL_INP_MVWAIT
  1209. 46680 GOSUB*VIL_VWM_CL
  1210. 46684 ENDIF
  1211. 46688 RETURN
  1212. 46696 *VIL_VWM_MOVE
  1213. 46748 MOUSE 2,VIL_VWM_MCA1$,VIL_VWM_MCD1$,VIL_VWM_MCX1%,VIL_VWM_MCY1%
  1214. 46752 MOUSE 1,VIL_MX%,VIL_MY%,1
  1215. 46756 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  1216. 46760 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14
  1217. 46764 VIL_WIN_W%=VIL_WIN_W%+8:VIL_WIN_Z%=VIL_WIN_Z%+8
  1218. 46768 MOUSE 4,VIL_VWM_XM%+VIL_MX%-VIL_WIN_X%-8,VIL_VWM_YM%+VIL_MY%-VIL_WIN_Y%-14,VIL_VWM_WM%+VIL_MX%-VIL_WIN_W%+8,VIL_VWM_ZM%+VIL_MY%-VIL_WIN_Z%+8
  1219. 46772 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0
  1220. 46776 VIL_WIN_W%=VIL_WIN_W%-VIL_WIN_X%:VIL_WIN_Z%=VIL_WIN_Z%-VIL_WIN_Y%
  1221. 46780 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1222. 46784 WHILE MOUSE(2,0)
  1223. 46788 VIL_MX%=MOUSE(9):VIL_MY%=MOUSE(10)
  1224. 46792 IF VIL_MX%OR VIL_MY%THEN
  1225. 46796 LINE(VIL_WIN_X%+VIL_W2%,VIL_WIN_Y%+VIL_W3%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1226. 46800 VIL_W0%=VIL_W0%+VIL_MX%:VIL_W1%=VIL_W1%+VIL_MY%
  1227. 46804 VIL_W2%=VIL_W0%-VIL_W0%MOD VIL_VWM_XD%
  1228. 46808 VIL_W3%=VIL_W1%-VIL_W1%MOD VIL_VWM_YD%
  1229. 46812 LINE(VIL_WIN_X%+VIL_W2%,VIL_WIN_Y%+VIL_W3%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1230. 46816 ENDIF
  1231. 46820 WEND
  1232. 46824 VIL_WIN_X%=VIL_WIN_X%+VIL_W2%:VIL_WIN_Y%=VIL_WIN_Y%+VIL_W3%
  1233. 46828 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1234. 46836 IF MOUSE(2,1)THEN
  1235. 46840 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  1236. 46844 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  1237. 46848 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  1238. 46852 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  1239. 46856 ELSE
  1240. 46860 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14
  1241. 46868 GOSUB*VIL_VWM_MV
  1242. 46872 ENDIF
  1243. 46876 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
  1244. 46880 MOUSE 4,0,0,639,479
  1245. 46884 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR
  1246. 46888 RETURN
  1247. 46896 *VIL_VWM_KMOVE
  1248. 46940 WHILE INKEY$<>"":WEND
  1249. 46944 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  1250. 46948 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14
  1251. 46952 VIL_WIN_W%=VIL_WIN_W%-VIL_WIN_X%+8:VIL_WIN_Z%=VIL_WIN_Z%-VIL_WIN_Y%+8
  1252. 46956 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1253. 46960 VIL_MSEL_KY%=0
  1254. 46964 WHILE VIL_MSEL_KY%<>-1 AND VIL_MSEL_KY%<>-2
  1255. 46968 GOSUB*VIL_MSEL_KY
  1256. 46972 IF VIL_MSEL_KY%=-4 THEN 46968
  1257. 46976 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1258. 46980 VIL_WIN_X%=VIL_WIN_X%+((VIL_MSEL_KY%=-6)-(VIL_MSEL_KY%=-5))*VIL_VWM_XD%
  1259. 46984 VIL_WIN_X%=VIL_WIN_X%-((VIL_WIN_X%+8<VIL_VWM_XM%)-(VIL_VWM_WM%<VIL_WIN_X%+VIL_WIN_W%-8))*VIL_VWM_XD%
  1260. 46988 VIL_WIN_X%=VIL_WIN_X%+((VIL_MSEL_KY%=-10)-(VIL_MSEL_KY%=-9))*VIL_VWM_XD%*8
  1261. 46996 VIL_WIN_X%=VIL_WIN_X%-((VIL_WIN_X%+8<VIL_VWM_XM%)-(VIL_VWM_WM%<VIL_WIN_X%+VIL_WIN_W%-8))*VIL_VWM_XD%*8
  1262. 47004 VIL_WIN_Y%=VIL_WIN_Y%+((VIL_MSEL_KY%=-7)-(VIL_MSEL_KY%=-8))*VIL_VWM_YD%
  1263. 47008 VIL_WIN_Y%=VIL_WIN_Y%-((VIL_WIN_Y%+14<VIL_VWM_YM%)-(VIL_VWM_ZM%<VIL_WIN_Y%+VIL_WIN_Z%-8))*VIL_VWM_YD%
  1264. 47012 VIL_WIN_Y%=VIL_WIN_Y%+((VIL_MSEL_KY%=-11)-(VIL_MSEL_KY%=-12))*VIL_VWM_YD%*8
  1265. 47020 VIL_WIN_Y%=VIL_WIN_Y%-((VIL_WIN_Y%+14<VIL_VWM_YM%)-(VIL_VWM_ZM%<VIL_WIN_Y%+VIL_WIN_Z%-8))*VIL_VWM_YD%*8
  1266. 47024 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1267. 47028 WEND
  1268. 47032 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1269. 47040 IF VIL_MSEL_KY%=-2 THEN
  1270. 47044 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14
  1271. 47048 GOSUB*VIL_VWM_MV
  1272. 47052 ELSE
  1273. 47056 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  1274. 47060 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  1275. 47064 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  1276. 47068 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  1277. 47072 ENDIF
  1278. 47076 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR
  1279. 47080 RETURN
  1280. 47088 *VIL_VWM_MV
  1281. 47148 VIL_E%=0
  1282. 47152 GET@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%)
  1283. 47156 IF VIL_E%=0 THEN
  1284. 47160 VIL_WIN_W%=VIL_WIN_X%+VIL_WIN_W%(VIL_WIN_AN%)-VIL_WIN_X%(VIL_WIN_AN%)
  1285. 47164 VIL_WIN_Z%=VIL_WIN_Y%+VIL_WIN_Z%(VIL_WIN_AN%)-VIL_WIN_Y%(VIL_WIN_AN%)
  1286. 47168 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  1287. 47172 GET@A(VIL_WIN_X%-8,VIL_WIN_Y%-14)-(VIL_WIN_W%+8,VIL_WIN_Z%+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  1288. 47176 PUT@A(VIL_WIN_X%-8,VIL_WIN_Y%-14)-(VIL_WIN_W%+8,VIL_WIN_Z%+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%)
  1289. 47184 VIL_WIN_X%(VIL_WIN_AN%)=VIL_WIN_X%
  1290. 47188 VIL_WIN_Y%(VIL_WIN_AN%)=VIL_WIN_Y%
  1291. 47192 VIL_WIN_W%(VIL_WIN_AN%)=VIL_WIN_W%
  1292. 47196 VIL_WIN_Z%(VIL_WIN_AN%)=VIL_WIN_Z%
  1293. 47200 VIL_VWM_R%=8
  1294. 47204 ELSE
  1295. 47208 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  1296. 47212 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  1297. 47216 VIL_VWM_R%=0
  1298. 47220 ENDIF
  1299. 47224 RETURN
  1300. 47232 *VIL_VWM_CLOSE
  1301. 47264 GOSUB*VIL_VWM_CL
  1302. 47268 VIL_VWM_R%=2
  1303. 47272 RETURN
  1304. 47280 *VIL_VWM_HIDE
  1305. 47324 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  1306. 47328 GOSUB*VIL_VWM_HD0
  1307. 47332 IF VIL_E%=0 THEN
  1308. 47336 WHILE MOUSE(2,0):WEND
  1309. 47340 GOSUB*VIL_VWM_HD1
  1310. 47344 VIL_VWM_R%=4
  1311. 47348 ELSE
  1312. 47352 VIL_VWM_R%=0
  1313. 47356 ENDIF
  1314. 47360 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR
  1315. 47364 RETURN
  1316. 47372 *VIL_VWM_KHIDE
  1317. 47416 WHILE INKEY$<>"":WEND
  1318. 47420 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  1319. 47424 GOSUB*VIL_VWM_HD0
  1320. 47428 IF VIL_E%=0 THEN
  1321. 47432 WHILE INKEY$="":WEND
  1322. 47436 GOSUB*VIL_VWM_HD1
  1323. 47440 VIL_VWM_R%=4
  1324. 47444 ENDIF
  1325. 47448 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR
  1326. 47452 RETURN
  1327. 47460 *VIL_VWM_HD0
  1328. 47496 VIL_E%=0
  1329. 47500 GET@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%)
  1330. 47504 IF VIL_E%=0 THEN
  1331. 47508 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  1332. 47512 ENDIF
  1333. 47516 RETURN
  1334. 47524 *VIL_VWM_HD1
  1335. 47556 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%)
  1336. 47560 RETURN
  1337. 47568 *VIL_VWM_HD2
  1338. 47600 GET@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  1339. 47604 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%)
  1340. 47608 RETURN
  1341. 47616 *VIL_VWM_RESIZE
  1342. 47676 MOUSE 2,VIL_VWM_MCA2$,VIL_VWM_MCD2$,VIL_VWM_MCX2%,VIL_VWM_MCY2%
  1343. 47680 MOUSE 1,VIL_MX%,VIL_MY%,1
  1344. 47684 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  1345. 47700 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14
  1346. 47704 VIL_WIN_W%=VIL_WIN_W%+8:VIL_WIN_Z%=VIL_WIN_Z%+8
  1347. 47708 VIL_W0%=VIL_WIN_W%-VIL_VWM_WL%-7-VIL_VWM_XM%
  1348. 47712 VIL_W1%=VIL_WIN_Z%-VIL_VWM_ZL%-7-VIL_VWM_YM%
  1349. 47716 VIL_W2%=VIL_WIN_X%+VIL_VWM_WL%+7-VIL_VWM_WM%
  1350. 47720 VIL_W3%=VIL_WIN_Y%+VIL_VWM_ZL%+13-VIL_VWM_ZM%
  1351. 47736 MOUSE 4,VIL_VWM_XM%-VIL_W0%*(VIL_W0%>0)-8,VIL_VWM_YM%-VIL_W1%*(VIL_W1%>0)-14,VIL_VWM_WM%-VIL_W2%*(VIL_W2%<0)+8,VIL_VWM_ZM%-VIL_W3%*(VIL_W3%<0)+8
  1352. 47744 VIL_W0%=0:VIL_W1%=0
  1353. 47748 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1354. 47752 WHILE MOUSE(2,0)
  1355. 47756 IF MOUSE(9)OR MOUSE(10)THEN
  1356. 47760 LOCATE 0,0:PRINT VIL_W0%;VIL_W1%
  1357. 47764 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  1358. 47768 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1359. 47772 IF VIL_MX%<=VIL_WIN_X%(VIL_WIN_AN%)-8 THEN
  1360. 47776 VIL_WIN_X%=VIL_MX%+(VIL_WIN_X%-VIL_MX%)MOD VIL_VWM_WD%
  1361. 47780 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)+8:VIL_W0%=1
  1362. 47784 ELSE IF VIL_MX%>=VIL_WIN_W%(VIL_WIN_AN%)+8 THEN
  1363. 47788 VIL_WIN_W%=VIL_MX%-(VIL_MX%-VIL_WIN_W%)MOD VIL_VWM_WD%
  1364. 47792 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)-8:VIL_W0%=2
  1365. 47796 ELSE
  1366. 47800 IF VIL_W0%=1 THEN
  1367. 47804 VIL_W2%=VIL_WIN_W%-VIL_VWM_XL%-15-VIL_MX%
  1368. 47808 VIL_W2%=VIL_MX%-VIL_W2%*(VIL_W2%<0)
  1369. 47812 VIL_WIN_X%=VIL_W2%+(VIL_WIN_X%-VIL_W2%)MOD VIL_VWM_WD%
  1370. 47816 ELSE IF VIL_W0%=2 THEN
  1371. 47820 VIL_W2%=VIL_WIN_X%+VIL_VWM_XL%+15-VIL_MX%
  1372. 47824 VIL_W2%=VIL_MX%-VIL_W2%*(VIL_W2%>0)
  1373. 47828 VIL_WIN_W%=VIL_W2%-(VIL_W2%-VIL_WIN_W%)MOD VIL_VWM_WD%
  1374. 47832 ENDIF
  1375. 47836 ENDIF
  1376. 47844 IF VIL_MY%<=VIL_WIN_Y%(VIL_WIN_AN%)-14 THEN
  1377. 47848 VIL_WIN_Y%=VIL_MY%+(VIL_WIN_Y%-VIL_MY%)MOD VIL_VWM_ZD%
  1378. 47852 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)+8:VIL_W1%=1
  1379. 47856 ELSE IF VIL_MY%>=VIL_WIN_Z%(VIL_WIN_AN%)+8 THEN
  1380. 47860 VIL_WIN_Z%=VIL_MY%-(VIL_MY%-VIL_WIN_Z%)MOD VIL_VWM_ZD%
  1381. 47864 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)-14:VIL_W1%=2
  1382. 47868 ELSE
  1383. 47872 IF VIL_W1%=1 THEN
  1384. 47876 VIL_W2%=VIL_WIN_Z%-VIL_VWM_YL%-21-VIL_MY%
  1385. 47880 VIL_W2%=VIL_MY%-VIL_W2%*(VIL_W2%<0)
  1386. 47884 VIL_WIN_Y%=VIL_W2%+(VIL_WIN_Y%-VIL_W2%)MOD VIL_VWM_ZD
  1387. 47888 ELSE IF VIL_W1%=2 THEN
  1388. 47892 VIL_W2%=VIL_WIN_Y%+VIL_VWM_YL%+21-VIL_MY%
  1389. 47896 VIL_W2%=VIL_MY%-VIL_W2%*(VIL_W2%>0)
  1390. 47900 VIL_WIN_Z%=VIL_W2%-(VIL_W2%-VIL_WIN_Z%)MOD VIL_VWM_ZD%
  1391. 47904 ENDIF
  1392. 47908 ENDIF
  1393. 47912 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1394. 47916 ENDIF
  1395. 47920 WEND
  1396. 47924 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1397. 47928 IF MOUSE(2,1)THEN
  1398. 47932 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  1399. 47936 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  1400. 47940 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  1401. 47944 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  1402. 47948 ELSE
  1403. 47952 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14
  1404. 47956 VIL_WIN_W%=VIL_WIN_W%-8:VIL_WIN_Z%=VIL_WIN_Z%-8
  1405. 47960 GOSUB*VIL_VWM_RS
  1406. 47964 ENDIF
  1407. 47968 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
  1408. 47972 MOUSE 4,0,0,639,479
  1409. 47976 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR
  1410. 47980 RETURN
  1411. 47988 *VIL_VWM_KRESIZE
  1412. 48056 WHILE INKEY$<>"":WEND
  1413. 48060 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  1414. 48076 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14
  1415. 48080 VIL_WIN_W%=VIL_WIN_W%+8:VIL_WIN_Z%=VIL_WIN_Z%+8
  1416. 48084 VIL_W2%=VIL_WIN_W%-VIL_VWM_WL%-7-VIL_VWM_XM%
  1417. 48088 VIL_W3%=VIL_WIN_Z%-VIL_VWM_ZL%-7-VIL_VWM_YM%
  1418. 48092 VIL_W4%=VIL_WIN_X%+VIL_VWM_WL%+7-VIL_VWM_WM%
  1419. 48096 VIL_W5%=VIL_WIN_Y%+VIL_VWM_ZL%+13-VIL_VWM_ZM%
  1420. 48100 VIL_W2%=VIL_VWM_XM%-VIL_W2%*(VIL_W2%>0)-8
  1421. 48104 VIL_W3%=VIL_VWM_YM%-VIL_W3%*(VIL_W3%>0)-14
  1422. 48108 VIL_W4%=VIL_VWM_WM%-VIL_W4%*(VIL_W4%<0)+8
  1423. 48112 VIL_W5%=VIL_VWM_ZM%-VIL_W5%*(VIL_W5%<0)+8
  1424. 48128 VIL_W0%=2:VIL_W1%=1
  1425. 48132 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1426. 48136 VIL_MSEL_KY%=0
  1427. 48140 WHILE VIL_MSEL_KY%<>-1 AND VIL_MSEL_KY%<>-2
  1428. 48144 GOSUB*VIL_MSEL_KY
  1429. 48148 IF VIL_MSEL_KY%=-4 THEN 48144
  1430. 48152 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1431. 48156 VIL_W6%=((VIL_MSEL_KY%=-6)-(VIL_MSEL_KY%=-5))*VIL_VWM_WD%+((VIL_MSEL_KY%=-10)-(VIL_MSEL_KY%=-9))*VIL_VWM_WD%*8
  1432. 48164 IF VIL_W0%=1 THEN
  1433. 48168 VIL_WIN_X%=VIL_WIN_X%+VIL_W6%
  1434. 48172 IF VIL_WIN_X%<VIL_W2%THEN
  1435. 48176 VIL_WIN_W%=VIL_W4%-(VIL_W4%-VIL_WIN_W%)MOD VIL_VWM_WD%
  1436. 48180 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)-8:VIL_W0%=2
  1437. 48184 ELSE IF VIL_WIN_W%-VIL_VWM_XL%-15<VIL_WIN_X%THEN
  1438. 48188 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)-8:VIL_W0%=2
  1439. 48192 VIL_WIN_W%=VIL_WIN_X%+VIL_VWM_XL%+15+(VIL_WIN_W%-VIL_WIN_X%-VIL_VWM_XL%-15)MOD VIL_VWM_WD%
  1440. 48196 ENDIF
  1441. 48200 ELSE
  1442. 48204 VIL_WIN_W%=VIL_WIN_W%+VIL_W6%
  1443. 48208 IF VIL_WIN_W%<VIL_WIN_X%+VIL_VWM_XL%+15 THEN
  1444. 48212 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)+8:VIL_W0%=1
  1445. 48216 VIL_WIN_X%=VIL_WIN_W%-VIL_VWM_XL%-15+(VIL_WIN_X%-VIL_WIN_W%+VIL_VWM_XL%+15)MOD VIL_VWM_WD%
  1446. 48220 ELSE IF VIL_W4%<VIL_WIN_W%THEN
  1447. 48224 VIL_WIN_X%=VIL_W2%-(VIL_W2%-VIL_WIN_X%)MOD VIL_VWM_WD%
  1448. 48228 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)+8:VIL_W0%=1
  1449. 48232 ENDIF
  1450. 48236 ENDIF
  1451. 48244 VIL_W6%=((VIL_MSEL_KY%=-7)-(VIL_MSEL_KY%=-8))*VIL_VWM_ZD%+((VIL_MSEL_KY%=-11)-(VIL_MSEL_KY%=-12))*VIL_VWM_ZD%*8
  1452. 48252 IF VIL_W1%=1 THEN
  1453. 48256 VIL_WIN_Y%=VIL_WIN_Y%+VIL_W6%
  1454. 48260 IF VIL_WIN_Y%<VIL_W3%THEN
  1455. 48264 VIL_WIN_Z%=VIL_W5%-(VIL_W5%-VIL_WIN_Z%)MOD VIL_VWM_ZD%
  1456. 48268 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)-14:VIL_W1%=2
  1457. 48272 ELSE IF VIL_WIN_Z%-VIL_VWM_YL%-21<VIL_WIN_Y%THEN
  1458. 48276 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)-14:VIL_W1%=2
  1459. 48280 VIL_WIN_Z%=VIL_WIN_Y%+VIL_VWM_YL%+21+(VIL_WIN_Z%-VIL_WIN_Y%-VIL_VWM_YL%-21)MOD VIL_VWM_ZD%
  1460. 48284 ENDIF
  1461. 48288 ELSE
  1462. 48292 VIL_WIN_Z%=VIL_WIN_Z%+VIL_W6%
  1463. 48296 IF VIL_WIN_Z%<VIL_WIN_Y%+VIL_VWM_YL%+21 THEN
  1464. 48300 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)+8:VIL_W1%=1
  1465. 48304 VIL_WIN_Y%=VIL_WIN_Z%-VIL_VWM_YL%-21+(VIL_WIN_Y%-VIL_WIN_Z%+VIL_VWM_YL%+21)MOD VIL_VWM_ZD%
  1466. 48308 ELSE IF VIL_W5%<VIL_WIN_Z%THEN
  1467. 48312 VIL_WIN_Y%=VIL_W3%-(VIL_W3%-VIL_WIN_Y%)MOD VIL_VWM_ZD%
  1468. 48316 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)+8:VIL_W1%=1
  1469. 48320 ENDIF
  1470. 48324 ENDIF
  1471. 48328 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1472. 48332 WEND
  1473. 48340 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B
  1474. 48344 IF VIL_MSEL_KY%=-2 THEN
  1475. 48348 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14
  1476. 48352 VIL_WIN_W%=VIL_WIN_W%-8:VIL_WIN_Z%=VIL_WIN_Z%-8
  1477. 48356 GOSUB*VIL_VWM_RS
  1478. 48360 ELSE
  1479. 48364 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  1480. 48368 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  1481. 48372 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  1482. 48376 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  1483. 48380 ENDIF
  1484. 48384 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR
  1485. 48388 RETURN
  1486. 48396 *VIL_VWM_RS
  1487. 48460 VIL_WIN_BFO&(VIL_WIN_AN%+1)=VIL_WIN_BFO&(VIL_WIN_AN%)+INT((INT((VIL_WIN_W%-VIL_WIN_X%+24)/8)*(VIL_WIN_Z%-VIL_WIN_Y%+23)*4+1)/2)
  1488. 48464 IF VIL_WIN_BFO&(VIL_WIN_AN%+1)<VIL_WIN_BFO&(VIL_WIN_AN%)THEN
  1489. 48468 VIL_WIN_BFO&(VIL_WIN_AN%+1)=VIL_WIN_BFO&(VIL_WIN_AN%)
  1490. 48472 ENDIF
  1491. 48476 VIL_E%=0
  1492. 48480 GET@A(VIL_WIN_X%(VIL_WIN_AN%),VIL_WIN_Y%(VIL_WIN_AN%))-(VIL_WIN_W%(VIL_WIN_AN%),VIL_WIN_Z%(VIL_WIN_AN%)),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%+1)
  1493. 48484 VIL_VWM_WX%=VIL_WIN_W%(VIL_WIN_AN%)-VIL_WIN_X%(VIL_WIN_AN%)
  1494. 48488 VIL_VWM_WY%=VIL_WIN_Z%(VIL_WIN_AN%)-VIL_WIN_Y%(VIL_WIN_AN%)
  1495. 48492 IF VIL_E%=0 THEN
  1496. 48496 VIL_WIN_X%(VIL_WIN_AN%+1)=VIL_WIN_X%
  1497. 48500 VIL_WIN_Y%(VIL_WIN_AN%+1)=VIL_WIN_Y%
  1498. 48504 VIL_WIN_W%(VIL_WIN_AN%+1)=VIL_WIN_W%
  1499. 48508 VIL_WIN_Z%(VIL_WIN_AN%+1)=VIL_WIN_Z%
  1500. 48512 GOSUB*VIL_VWM_CL
  1501. 48520 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%+2)
  1502. 48524 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%+2)
  1503. 48528 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%+2)
  1504. 48532 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%+2)
  1505. 48536 VIL_VWM_AT%=VIL_VWM_AT%(VIL_WIN_AN%+1)
  1506. 48540 VIL_VWM_T$=VIL_VWM_T$(VIL_WIN_AN%+1)
  1507. 48544 GOSUB*VIL_VWM_OP
  1508. 48548 GOSUB*VIL_WIN_PMR
  1509. 48552 PUT@A(0,0)-(VIL_VWM_WX%,VIL_VWM_WY%),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%+1)
  1510. 48560 GOSUB*VIL_WIN_PMA
  1511. 48564 VIL_VWM_R%=16
  1512. 48568 ELSE
  1513. 48572 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  1514. 48576 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  1515. 48580 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  1516. 48584 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  1517. 48588 VIL_VWM_R%=0
  1518. 48592 ENDIF
  1519. 48596 RETURN
  1520. 48620 *VIL_SEL_INITM
  1521. 48660 RETURN
  1522. 48668 *VIL_SEL_OK
  1523. 48772 SYMBOL(VIL_X%+4,VIL_Y%+4),"確認",1,1,7
  1524. 48776 LINE(VIL_X%+2,VIL_Y%+2)-(VIL_X%+37,VIL_Y%+21),PSET,7,B
  1525. 48780 VIL_W%=VIL_X%+39:VIL_Z%=VIL_Y%+23
  1526. 48784 VIL_XN%=1:VIL_YN%=1:VIL_C%=15:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
  1527. 48788 VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
  1528. 48792 GOSUB*VIL_MSEL_M
  1529. 48796 GOSUB*VIL_MSEL_BC
  1530. 48800 RETURN
  1531. 48808 *VIL_SEL_YN
  1532. 48924 SYMBOL(VIL_X%+4,VIL_Y%+4),"はい    いいえ",1,1,7
  1533. 48928 LINE(VIL_X%+2,VIL_Y%+2)-(VIL_X%+53,VIL_Y%+21),PSET,7,B
  1534. 48932 LINE(VIL_X%+66,VIL_Y%+2)-(VIL_X%+117,VIL_Y%+21),PSET,7,B
  1535. 48936 VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+23
  1536. 48940 VIL_XL%=64:VIL_XN%=2:VIL_YN%=1:VIL_C%=15:VIL_MSEL_BD%=0
  1537. 48944 VIL_MSEL_MN%=0:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2
  1538. 48948 GOSUB*VIL_MSEL_M
  1539. 48952 GOSUB*VIL_MSEL_BC
  1540. 48956 IF VIL_KN%=-1 THEN VIL_KN%=2
  1541. 48960 RETURN
  1542. 48968 *VIL_SEL_DO
  1543. 49088 SYMBOL(VIL_X%+4,VIL_Y%+4),"実行  取消",1,1,7
  1544. 49092 LINE(VIL_X%+2,VIL_Y%+2)-(VIL_X%+37,VIL_Y%+21),PSET,7,B
  1545. 49096 LINE(VIL_X%+50,VIL_Y%+2)-(VIL_X%+85,VIL_Y%+21),PSET,7,B
  1546. 49100 VIL_W%=VIL_X%+39:VIL_Z%=VIL_Y%+23
  1547. 49104 VIL_XL%=48:VIL_XN%=2:VIL_YN%=1:VIL_C%=15:VIL_MSEL_BD%=0
  1548. 49108 VIL_MSEL_MN%=0:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2
  1549. 49112 GOSUB*VIL_MSEL_M
  1550. 49116 GOSUB*VIL_MSEL_BC
  1551. 49120 IF VIL_KN%=-1 THEN VIL_KN%=2
  1552. 49124 RETURN
  1553. 50030 *VIL_UTY_VER
  1554. 50035 VIL_VER%=200
  1555. 50040 RETURN
  1556. 50075 *VIL_SYSCNF_INITM
  1557. 50125 VIL_VWM_X%(10)=VIL_W0%
  1558. 50130 VIL_VWM_Y%(10)=VIL_W1%
  1559. 50135 VIL_VWM_W%(10)=VIL_W0%+111
  1560. 50140 VIL_VWM_Z%(10)=VIL_W1%+79
  1561. 50150 RETURN
  1562. 50160 *VIL_SYSCNF_M
  1563. 50200 VIL_VWM_N%=10:VIL_VWM_AT%=15:VIL_VWM_T$="SYSTEM"
  1564. 50205 GOSUB*VIL_VWM_OP
  1565. 50210 SYMBOL(8,8),"システム設定",1,1,6
  1566. 50215 SYMBOL(8,36),"1 BGM設定",1,1,7
  1567. 50220 SYMBOL(8,56),"2 色設定    ",1,1,7
  1568. 50230 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1569. 50235 WHILE VIL_VWM_R%<>2
  1570. 50240 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+103:VIL_Z%=VIL_Y%+19
  1571. 50245 VIL_YL%=20:VIL_XN%=1:VIL_YN%=2:VIL_C%=15
  1572. 50250 VIL_MSEL_BD%=0:VIL_MSEL_MN%=10:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2
  1573. 50255 GOSUB*VIL_MSEL_M
  1574. 50260 IF VIL_KN%>0 THEN
  1575. 50265 GOSUB*VIL_BEEP_G
  1576. 50270 ON VIL_KN%GOSUB*VIL_BGM_M,*VIL_COLCNF_M
  1577. 50275 VIL_VWM_R%=0
  1578. 50280 ELSE IF VIL_KN%=-1 THEN
  1579. 50285 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1580. 50290 ELSE
  1581. 50295 GOSUB*VIL_VWM_CHECK
  1582. 50300 ENDIF
  1583. 50305 WEND
  1584. 50310 RETURN
  1585. 50345 *VIL_COLCNF_INITM
  1586. 50420 VIL_COLCNF_INT%=VIL_W4%
  1587. 50425 VIL_COLCNF_INTB%=VIL_W4%
  1588. 50430 DIM VIL_COLCNF_P%(2)
  1589. 50435 DIM VIL_COLCNF_VWP%(2)
  1590. 50440 DIM VIL_COLCNF_VWPB%(2)
  1591. 50445 VIL_COLCNF_VWP%(0)=VIL_W5%:VIL_COLCNF_VWPB%(0)=VIL_W5%
  1592. 50450 VIL_COLCNF_VWP%(1)=VIL_W6%:VIL_COLCNF_VWPB%(1)=VIL_W6%
  1593. 50455 VIL_COLCNF_VWP%(2)=VIL_W7%:VIL_COLCNF_VWPB%(2)=VIL_W7%
  1594. 50465 VIL_VWM_X%(20)=VIL_W0%:VIL_VWM_Y%(20)=VIL_W1%
  1595. 50470 VIL_VWM_W%(20)=VIL_W0%+159:VIL_VWM_Z%(20)=VIL_W1%+99
  1596. 50480 VIL_VWM_X%(21)=VIL_W2%:VIL_VWM_Y%(21)=VIL_W3%
  1597. 50485 VIL_VWM_W%(21)=VIL_W2%+159:VIL_VWM_Z%(21)=VIL_W3%+99
  1598. 50495 GOSUB*VIL_COLCNF_INIT
  1599. 50505 RETURN
  1600. 50515 *VIL_COLCNF_INIT
  1601. 50560 VIL_COLCNF_INT%=VIL_COLCNF_INTB%
  1602. 50565 IF VIL_COLCNF_INT%THEN VIL_K%=255 ELSE VIL_K%=192
  1603. 50570 GOSUB*VIL_COLCNF_INTSET
  1604. 50575 VIL_COLCNF_VWP%(0)=VIL_COLCNF_VWPB%(0)
  1605. 50580 VIL_COLCNF_VWP%(1)=VIL_COLCNF_VWPB%(1)
  1606. 50585 VIL_COLCNF_VWP%(2)=VIL_COLCNF_VWPB%(2)
  1607. 50590 GOSUB*VIL_COLCNF_WPALSET
  1608. 50595 RETURN
  1609. 50605 *VIL_COLCNF_WPALSET
  1610. 50645 VIL_W0%=VIL_COLCNF_VWP%(0)
  1611. 50650 VIL_W1%=VIL_COLCNF_VWP%(1)
  1612. 50655 VIL_W2%=VIL_COLCNF_VWP%(2)
  1613. 50660 PALETTE 1,[VIL_W0%-80+(VIL_W0%<80)*(VIL_W0%-80),VIL_W1%-80+(VIL_W1%<80)*(VIL_W1%-80),VIL_W2%-80+(VIL_W2%<80)*(VIL_W2%-80)],1
  1614. 50665 PALETTE 2,[VIL_W0%,VIL_W1%,VIL_W2%],1
  1615. 50670 PALETTE 3,[VIL_W0%+80+(VIL_W0%>175)*(VIL_W0%-175),VIL_W1%+80+(VIL_W1%>175)*(VIL_W1%-175),VIL_W2%+80+(VIL_W2%>175)*(VIL_W2%-175)],1
  1616. 50675 RETURN
  1617. 50685 *VIL_COLCNF_M
  1618. 50770 VIL_VWM_N%=20:VIL_VWM_AT%=15:VIL_VWM_T$="COLOR"
  1619. 50775 GOSUB*VIL_VWM_OP
  1620. 50780 SYMBOL(8,8),"   色設定   ",1,1,6
  1621. 50785 SYMBOL(8,36),"1 表示 ["+KMID$("低高",1-VIL_COLCNF_INT%,1)+"輝度]",1,1,7
  1622. 50790 SYMBOL(8,56),"2 パレット初期化",1,1,7
  1623. 50795 SYMBOL(8,76),"3 ウィンドウ色設定",1,1,7
  1624. 50805 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1625. 50810 WHILE VIL_VWM_R%<>2
  1626. 50815 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+151:VIL_Z%=VIL_Y%+19
  1627. 50820 VIL_YL%=20:VIL_XN%=1:VIL_YN%=3:VIL_C%=15
  1628. 50825 VIL_MSEL_BD%=0:VIL_MSEL_MN%=20:VIL_MSEL_BB%=1:VIL_MSEL_BE%=3
  1629. 50830 GOSUB*VIL_MSEL_M
  1630. 50835 IF VIL_KN%>0 THEN
  1631. 50840 GOSUB*VIL_BEEP_G
  1632. 50845 ON VIL_KN%GOSUB 50915,*VIL_COLCNF_INIT,50945
  1633. 50850 VIL_X%=88:VIL_Y%=36:VIL_L%=2:VIL_C%=15:VIL_CB%=VIL_VWM_CB%
  1634. 50855 VIL_A$=KMID$("低高",1-VIL_COLCNF_INT%,1)
  1635. 50860 GOSUB*VIL_INP_GPRINT
  1636. 50865 VIL_VWM_R%=0
  1637. 50870 ELSE IF VIL_KN%=-1 THEN
  1638. 50875 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1639. 50880 ELSE
  1640. 50885 GOSUB*VIL_VWM_CHECK
  1641. 50890 ENDIF
  1642. 50895 WEND
  1643. 50900 RETURN
  1644. 50915 VIL_COLCNF_INT%=NOT VIL_COLCNF_INT%
  1645. 50920 IF VIL_COLCNF_INT%THEN VIL_K%=255 ELSE VIL_K%=192
  1646. 50925 GOSUB*VIL_COLCNF_INTSET
  1647. 50930 RETURN
  1648. 50945 VIL_P%=2
  1649. 50950 VIL_COLCNF_P%(0)=VIL_COLCNF_VWP%(0)
  1650. 50955 VIL_COLCNF_P%(1)=VIL_COLCNF_VWP%(1)
  1651. 50960 VIL_COLCNF_P%(2)=VIL_COLCNF_VWP%(2)
  1652. 50965 GOSUB*VIL_COLCNF_PALCNF
  1653. 50970 VIL_COLCNF_VWP%(0)=VIL_COLCNF_P%(0)
  1654. 50975 VIL_COLCNF_VWP%(1)=VIL_COLCNF_P%(1)
  1655. 50980 VIL_COLCNF_VWP%(2)=VIL_COLCNF_P%(2)
  1656. 50985 GOSUB*VIL_COLCNF_WPALSET
  1657. 50990 RETURN
  1658. 51000 *VIL_COLCNF_INTSET
  1659. 51040 PALETTE 9,[0,0,VIL_K%],1
  1660. 51045 PALETTE 10,[0,VIL_K%,0],1
  1661. 51050 PALETTE 11,[0,VIL_K%,VIL_K%],1
  1662. 51055 PALETTE 12,[VIL_K%,0,0],1
  1663. 51060 PALETTE 13,[VIL_K%,0,VIL_K%],1
  1664. 51065 PALETTE 14,[VIL_K%,VIL_K%,0],1
  1665. 51070 PALETTE 15,[VIL_K%,VIL_K%,VIL_K%],1
  1666. 51075 RETURN
  1667. 51085 *VIL_COLCNF_PALCNF
  1668. 51145 VIL_VWM_N%=21:VIL_VWM_AT%=15:VIL_VWM_T$="PALETTE"
  1669. 51150 GOSUB*VIL_VWM_OP
  1670. 51155 SYMBOL(32,8),"パレット設定",1,1,6
  1671. 51160 LINE(8,8)-(23,24),PSET,%VIL_P%,BF
  1672. 51165 LINE(136,8)-(151,24),PSET,%VIL_P%,BF
  1673. 51175 GOSUB 51420
  1674. 51180 FOR VIL_I%=2 TO 0 STEP-1
  1675. 51185 SYMBOL(8,VIL_I%*20+36),MID$("GRB",3-VIL_I%,1),1,1,4-VIL_I%+(VIL_I%>0)
  1676. 51190 SYMBOL(16,VIL_I%*20+36),"(  )",1,1,7
  1677. 51195 FOR VIL_J%=1 TO 3
  1678. 51200 LINE(VIL_MSEL_X%(VIL_I%*3+VIL_J%)+2,VIL_MSEL_Y%(VIL_I%*3+VIL_J%)+2)-(VIL_MSEL_W%(VIL_I%*3+VIL_J%)-2,VIL_MSEL_Z%(VIL_I%*3+VIL_J%)-2),PSET,7,B
  1679. 51205 NEXT
  1680. 51210 SYMBOL(48,VIL_I%*20+36),"〈",1,1,7
  1681. 51215 SYMBOL(141,VIL_I%*20+36),"〉",1,1,7
  1682. 51220 GOSUB 51370
  1683. 51225 NEXT
  1684. 51235 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1685. 51240 WHILE VIL_VWM_R%<>2
  1686. 51250 VIL_XN%=3:VIL_YN%=3:VIL_C%=15
  1687. 51255 VIL_MSEL_BD%=4:VIL_MSEL_MN%=21:VIL_MSEL_BB%=1:VIL_MSEL_BE%=9
  1688. 51260 GOSUB*VIL_MSEL_IN
  1689. 51265 IF VIL_KN%>0 THEN
  1690. 51270 VIL_I%=2-(VIL_KN%-1)\3
  1691. 51275 VIL_J%=VIL_KN%MOD 3
  1692. 51280 IF VIL_J%=2 THEN
  1693. 51290 ELSE
  1694. 51295 VIL_COLCNF_P%(VIL_I%)=VIL_COLCNF_P%(VIL_I%)+((VIL_J%=1)-(VIL_J%=0))*16
  1695. 51300 VIL_COLCNF_P%(VIL_I%)=VIL_COLCNF_P%(VIL_I%)+((255<VIL_COLCNF_P%(VIL_I%))-(VIL_COLCNF_P%(VIL_I%)<0))*256
  1696. 51305 ENDIF
  1697. 51310 GOSUB 51370
  1698. 51315 PALETTE VIL_P%,[VIL_COLCNF_P%(0),VIL_COLCNF_P%(1),VIL_COLCNF_P%(2)],1
  1699. 51320 ELSE IF VIL_KN%=-1 THEN
  1700. 51325 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1701. 51330 ELSE
  1702. 51335 GOSUB*VIL_VWM_CHECK
  1703. 51340 GOSUB 51420
  1704. 51345 ENDIF
  1705. 51350 WEND
  1706. 51355 RETURN
  1707. 51370 VIL_X%=24:VIL_Y%=VIL_I%*20+36:VIL_L%=2:VIL_C%=15
  1708. 51375 VIL_A$=FNVIL_P2SS$(VIL_COLCNF_P%(VIL_I%)\16,2):VIL_CB%=VIL_VWM_CB%
  1709. 51380 GOSUB*VIL_INP_GPRINT
  1710. 51385 LINE(72,VIL_I%*20+37)-(131,VIL_I%*20+50),PSET,%VIL_VWM_CB%,BF
  1711. 51390 IF VIL_COLCNF_P%(VIL_I%)\16 THEN
  1712. 51395 LINE(72,VIL_I%*20+37)-(71+(VIL_COLCNF_P%(VIL_I%)\16)*4,VIL_I%*20+50),PSET,4-VIL_I%+(VIL_I%>0),BF
  1713. 51400 ENDIF
  1714. 51405 RETURN
  1715. 51420 FOR VIL_I%=0 TO 2
  1716. 51425 VIL_MSEL_X%(VIL_I%*3+1)=50:VIL_MSEL_Y%(VIL_I%*3+1)=74-VIL_I%*20
  1717. 51430 VIL_MSEL_W%(VIL_I%*3+1)=69:VIL_MSEL_Z%(VIL_I%*3+1)=93-VIL_I%*20
  1718. 51435 VIL_MSEL_X%(VIL_I%*3+2)=69:VIL_MSEL_Y%(VIL_I%*3+2)=74-VIL_I%*20
  1719. 51440 VIL_MSEL_W%(VIL_I%*3+2)=134:VIL_MSEL_Z%(VIL_I%*3+2)=93-VIL_I%*20
  1720. 51445 VIL_MSEL_X%(VIL_I%*3+3)=134:VIL_MSEL_Y%(VIL_I%*3+3)=74-VIL_I%*20
  1721. 51450 VIL_MSEL_W%(VIL_I%*3+3)=153:VIL_MSEL_Z%(VIL_I%*3+3)=93-VIL_I%*20
  1722. 51455 NEXT
  1723. 51460 RETURN
  1724. 51500 *VIL_BGM_INITM
  1725. 51545 VIL_VWM_X%(30)=VIL_W0%:VIL_VWM_Y%(30)=VIL_W1%
  1726. 51550 VIL_VWM_W%(30)=VIL_W0%+96:VIL_VWM_Z%(30)=VIL_W1%+79
  1727. 51560 RETURN
  1728. 51570 *VIL_BGM_M
  1729. 51645 VIL_VWM_N%=30:VIL_VWM_AT%=15:VIL_VWM_T$="BGM"
  1730. 51650 GOSUB*VIL_VWM_OP
  1731. 51655 SYMBOL(8,8),"BGM設定",1,1,6
  1732. 51660 SYMBOL(8,36),"1 FM音源",1,1,7
  1733. 51665 SYMBOL(8,56),"2 CDDA",1,1,7
  1734. 51675 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1735. 51680 WHILE VIL_VWM_R%<>2
  1736. 51685 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+87:VIL_Z%=VIL_Y%+19
  1737. 51690 VIL_YL%=20:VIL_XN%=1:VIL_YN%=2:VIL_C%=15
  1738. 51695 VIL_MSEL_BD%=0:VIL_MSEL_MN%=30:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2
  1739. 51700 GOSUB*VIL_MSEL_M
  1740. 51705 IF VIL_KN%>0 THEN
  1741. 51710 GOSUB*VIL_BEEP_G
  1742. 51715 ON VIL_KN%GOSUB*VIL_BGMFM_M,*VIL_BGMCD_M
  1743. 51720 VIL_VWM_R%=0
  1744. 51725 ELSE IF VIL_KN%=-1 THEN
  1745. 51730 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1746. 51735 ELSE
  1747. 51740 GOSUB*VIL_VWM_CHECK
  1748. 51745 ENDIF
  1749. 51750 WEND
  1750. 51755 RETURN
  1751. 51790 *VIL_BGMFM_INITM
  1752. 51855 VIL_BGMFM_P!=0
  1753. 51860 VIL_BGMFM_T%=0
  1754. 51865 VIL_BGMFM_PF%=0
  1755. 51870 VIL_BGMFM_SP%=0
  1756. 51875 VIL_BGMFM_LF%=-1
  1757. 51880 VIL_BGMFM_MB%=0:VIL_BGMFM_ME%=0
  1758. 51885 VIL_BGMFM_LB%=0:VIL_BGMFM_LE%=0
  1759. 51890 VIL_BGMFM_TMAX%=0
  1760. 51895 VIL_BGMFM_DMAX%=0
  1761. 51900 VIL_BGMFM_INIT$=""
  1762. 51905 VIL_BGMFM_ST!=0
  1763. 51915 DIM VIL_BGMFM_M0$(VIL_W4%),VIL_BGMFM_M1$(VIL_W4%)
  1764. 51920 DIM VIL_BGMFM_M2$(VIL_W4%),VIL_BGMFM_M3$(VIL_W4%)
  1765. 51925 DIM VIL_BGMFM_M4$(VIL_W4%),VIL_BGMFM_M5$(VIL_W4%)
  1766. 51930 DIM VIL_BGMFM_T$(VIL_W5%)
  1767. 51935 DIM VIL_BGMFM_N$(VIL_W5%)
  1768. 51945 DIM VIL_BGMFM_MB%(VIL_W6%)
  1769. 51950 DIM VIL_BGMFM_ME%(VIL_W6%)
  1770. 51955 DIM VIL_BGMFM_LB%(VIL_W6%)
  1771. 51960 DIM VIL_BGMFM_LE%(VIL_W6%)
  1772. 51965 DIM VIL_BGMFM_INIT$(VIL_W6%)
  1773. 51970 DIM VIL_BGMFM_ST!(VIL_W6%)
  1774. 51985 VIL_VWM_X%(31)=VIL_W0%:VIL_VWM_Y%(31)=VIL_W1%
  1775. 51990 VIL_VWM_W%(31)=VIL_W0%+175:VIL_VWM_Z%(31)=VIL_W1%+79
  1776. 52000 VIL_VWM_X%(32)=VIL_W2%:VIL_VWM_Y%(32)=VIL_W3%
  1777. 52005 VIL_VWM_W%(32)=VIL_W2%+287:VIL_VWM_Z%(32)=VIL_W3%+223
  1778. 52015 GOSUB*VIL_BGMFM_TRD
  1779. 52020 RETURN
  1780. 52030 *VIL_BGMFM_M
  1781. 52115 VIL_VWM_N%=31:VIL_VWM_AT%=15:VIL_VWM_T$="BGM FM"
  1782. 52120 GOSUB*VIL_VWM_OP
  1783. 52125 IF VIL_BGMCD_PF%THEN GOSUB*VIL_BGMCD_OFF
  1784. 52130 SYMBOL(8,8),"  FM音源BGM  ",1,1,6
  1785. 52135 SYMBOL(8,36),"1 BGM ["+KMID$("OFFON ",1-VIL_BGMFM_PF%*3,3)+"]",1,1,7
  1786. 52140 SYMBOL(8,56),"2 曲選択",1,1,7
  1787. 52150 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1788. 52155 WHILE VIL_VWM_R%<>2
  1789. 52160 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+167:VIL_Z%=VIL_Y%+19
  1790. 52165 VIL_YL%=20:VIL_XN%=1:VIL_YN%=2:VIL_C%=15
  1791. 52170 VIL_MSEL_BD%=0:VIL_MSEL_MN%=31:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2
  1792. 52175 GOSUB*VIL_MSEL_M
  1793. 52180 IF VIL_KN%>0 THEN
  1794. 52185 GOSUB*VIL_BEEP_G
  1795. 52190 ON VIL_KN%GOSUB 52260,*VIL_BGMFM_SEL
  1796. 52195 VIL_X%=104:VIL_Y%=36:VIL_L%=6:VIL_C%=15:VIL_CB%=VIL_VWM_CB%
  1797. 52200 VIL_A$=KMID$("OFFON ",1-VIL_BGMFM_PF%*3,3)
  1798. 52205 GOSUB*VIL_INP_GPRINT
  1799. 52210 VIL_VWM_R%=0
  1800. 52215 ELSE IF VIL_KN%=-1 THEN
  1801. 52220 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1802. 52225 ELSE
  1803. 52230 GOSUB*VIL_VWM_CHECK
  1804. 52235 ENDIF
  1805. 52240 WEND
  1806. 52245 RETURN
  1807. 52260 IF VIL_BGMFM_PF%THEN
  1808. 52265 GOSUB*VIL_BGMFM_OFF
  1809. 52270 ELSE
  1810. 52275 IF VIL_BGMFM_INIT$=""THEN
  1811. 52280 GOSUB*VIL_BEEP_B
  1812. 52290 ELSE
  1813. 52295 GOSUB*VIL_BGMFM_ON
  1814. 52300 ENDIF
  1815. 52305 ENDIF
  1816. 52310 RETURN
  1817. 52320 *VIL_BGMFM_SEL
  1818. 52410 VIL_VWM_N%=32:VIL_VWM_AT%=15:VIL_VWM_T$="BGM SELECT"
  1819. 52415 GOSUB*VIL_VWM_OP
  1820. 52420 SYMBOL(8,8),"   FM音源BGM 曲選択",1,1,6
  1821. 52430 GOSUB 52580
  1822. 52440 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1823. 52445 WHILE VIL_VWM_R%<>2
  1824. 52450 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+279:VIL_Z%=VIL_Y%+19
  1825. 52455 VIL_YL%=20:VIL_XN%=1:VIL_YN%=9:VIL_C%=15
  1826. 52460 VIL_MSEL_BD%=0:VIL_MSEL_MN%=32:VIL_MSEL_BB%=1:VIL_MSEL_BE%=9
  1827. 52465 GOSUB*VIL_MSEL_M
  1828. 52470 IF VIL_KN%>0 THEN
  1829. 52475 IF VIL_KN%=9 THEN
  1830. 52480 VIL_BGMFM_SP%=VIL_BGMFM_SP%+8
  1831. 52485 IF VIL_BGMFM_SP%>VIL_BGMFM_TMAX%THEN VIL_BGMFM_SP%=0
  1832. 52490 GOSUB 52580
  1833. 52495 ELSE IF VIL_BGMFM_SP%+VIL_KN%-2<VIL_BGMFM_TMAX%THEN
  1834. 52500 VIL_W0%=INSTR(VIL_BGMFM_N$(VIL_BGMFM_SP%+VIL_KN%-1),"/")
  1835. 52505 VIL_F$=LEFT$(VIL_BGMFM_N$(VIL_BGMFM_SP%+VIL_KN%-1),VIL_W0%-1)
  1836. 52510 VIL_A$=MID$(VIL_BGMFM_N$(VIL_BGMFM_SP%+VIL_KN%-1),VIL_W0%+1)
  1837. 52520 GOSUB*VIL_BGMFM_DRD
  1838. 52525 ENDIF
  1839. 52530 VIL_VWM_R%=0
  1840. 52535 ELSE IF VIL_KN%=-1 THEN
  1841. 52540 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1842. 52545 ELSE
  1843. 52550 GOSUB*VIL_VWM_CHECK
  1844. 52555 ENDIF
  1845. 52560 WEND
  1846. 52565 RETURN
  1847. 52580 VIL_L%=34:VIL_C%=15:VIL_CB%=VIL_VWM_CB%
  1848. 52585 FOR VIL_I%=0 TO 7
  1849. 52590 VIL_X%=8:VIL_Y%=VIL_I%*20+36
  1850. 52595 VIL_A$=HEX$(VIL_I%+1)
  1851. 52600 IF VIL_BGMFM_SP%+VIL_I%<=VIL_BGMFM_TMAX%THEN VIL_A$=VIL_A$+" "+VIL_BGMFM_T$(VIL_BGMFM_SP%+VIL_I%)
  1852. 52605 GOSUB*VIL_INP_GPRINT
  1853. 52610 NEXT
  1854. 52615 SYMBOL(8,196),"9          ~ 次頁 ~",1,1,7
  1855. 52620 RETURN
  1856. 52630 *VIL_BGMFM_TRD
  1857. 52670 VIL_E%=0
  1858. 52675 OPEN"I",#1,VIL_FMTDIR$+"VIL_FM.TTL"
  1859. 52680 IF VIL_E%=0 THEN
  1860. 52685 INPUT#1,VIL_BGMFM_TMAX%
  1861. 52690 VIL_BGMFM_TMAX%=VIL_BGMFM_TMAX%-1
  1862. 52695 FOR VIL_I%=0 TO VIL_BGMFM_TMAX%
  1863. 52700 LINE INPUT#1,VIL_BGMFM_T$(VIL_I%)
  1864. 52705 LINE INPUT#1,VIL_BGMFM_N$(VIL_I%)
  1865. 52710 NEXT
  1866. 52715 CLOSE#1
  1867. 52720 ENDIF
  1868. 52725 RETURN
  1869. 52735 *VIL_BGMFM_DRD
  1870. 52845 VIL_W0%=VIL_BGMFM_PF%
  1871. 52850 IF VIL_W0%THEN GOSUB*VIL_BGMFM_OFF
  1872. 52855 VIL_A$=":"+VIL_A$
  1873. 52860 IF LEFT$(VIL_F$,1)<>"\"AND MID$(VIL_F$,2,1)<>":"THEN
  1874. 52865 VIL_F$=VIL_FMTDIR$+VIL_F$
  1875. 52870 ENDIF
  1876. 52875 OPEN"I",#1,VIL_F$
  1877. 52880 GOSUB 53045:IF VIL_W0$<>VIL_A$THEN 52880
  1878. 52885 GOSUB 53045
  1879. 52890 IF VIL_W0$="*"THEN
  1880. 52895 LOAD@
  1881. 52900 ELSE
  1882. 52905 IF LEFT$(VIL_W0$,1)<>"\"AND MID$(VIL_W0$,2,1)<>":"THEN
  1883. 52910 VIL_W0$=VIL_FMTDIR$+VIL_W0$
  1884. 52915 ENDIF
  1885. 52920 LOAD@VIL_W0$
  1886. 52925 ENDIF
  1887. 52930 GOSUB 53045:VIL_BGMFM_LB%=VAL(VIL_W0$)+VIL_BGMFM_MB%
  1888. 52935 GOSUB 53045:VIL_BGMFM_LE%=VAL(VIL_W0$)+VIL_BGMFM_MB%
  1889. 52940 GOSUB 53045:VIL_BGMFM_ME%=VAL(VIL_W0$)+VIL_BGMFM_MB%
  1890. 52945 GOSUB 53045:VIL_BGMFM_INIT$=VIL_W0$
  1891. 52950 GOSUB 53045:VIL_BGMFM_ST!=VAL(VIL_W0$)
  1892. 52960 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME%
  1893. 52965 GOSUB 53045:VIL_BGMFM_M0$(VIL_I%)=VIL_W0$:NEXT
  1894. 52970 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME%
  1895. 52975 GOSUB 53045:VIL_BGMFM_M1$(VIL_I%)=VIL_W0$:NEXT
  1896. 52980 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME%
  1897. 52985 GOSUB 53045:VIL_BGMFM_M2$(VIL_I%)=VIL_W0$:NEXT
  1898. 52990 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME%
  1899. 52995 GOSUB 53045:VIL_BGMFM_M3$(VIL_I%)=VIL_W0$:NEXT
  1900. 53000 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME%
  1901. 53005 GOSUB 53045:VIL_BGMFM_M4$(VIL_I%)=VIL_W0$:NEXT
  1902. 53010 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME%
  1903. 53015 GOSUB 53045:VIL_BGMFM_M5$(VIL_I%)=VIL_W0$:NEXT
  1904. 53020 CLOSE#1
  1905. 53025 IF VIL_W0%THEN GOSUB*VIL_BGMFM_ON
  1906. 53030 RETURN
  1907. 53045 LINE INPUT#1,VIL_W0$:IF LEFT$(VIL_W0$,1)="'"THEN 53045
  1908. 53050 RETURN
  1909. 53060 *VIL_BGMFM_ON
  1910. 53100 VIL_BGMFM_PF%=-1:VIL_BGMFM_P!=0:VIL_BGMFM_T%=VIL_BGMFM_MB%
  1911. 53105 PLAY VIL_BGMFM_INIT$
  1912. 53110 GOSUB*VIL_BGMFM_DRV
  1913. 53115 ON INTERVAL GOSUB*VIL_BGMFM_DRV:INTERVAL 1:INTERVAL ON
  1914. 53120 RETURN
  1915. 53130 *VIL_BGMFM_OFF
  1916. 53170 VIL_BGMFM_PF%=0:INTERVAL OFF:PLAY OFF
  1917. 53175 RETURN
  1918. 53185 *VIL_BGMFM_DRV
  1919. 53225 IF PLAY(1)>=VIL_BGMFM_P!-1 THEN
  1920. 53230 VIL_BGMFM_P!=VIL_BGMFM_P!+VIL_BGMFM_ST!
  1921. 53235 PLAY VIL_BGMFM_M0$(VIL_BGMFM_T%),VIL_BGMFM_M1$(VIL_BGMFM_T%),VIL_BGMFM_M2$(VIL_BGMFM_T%),VIL_BGMFM_M3$(VIL_BGMFM_T%),VIL_BGMFM_M4$(VIL_BGMFM_T%),VIL_BGMFM_M5$(VIL_BGMFM_T%)
  1922. 53240 VIL_BGMFM_T%=VIL_BGMFM_T%+1
  1923. 53245 IF VIL_BGMFM_T%>VIL_BGMFM_LE%AND VIL_BGMFM_LF%THEN VIL_BGMFM_T%=VIL_BGMFM_LB%
  1924. 53250 IF VIL_BGMFM_T%>VIL_BGMFM_ME%THEN INTERVAL OFF:VIL_BGMFM_PF%=0
  1925. 53255 ENDIF
  1926. 53260 RETURN
  1927. 53410 *VIL_BGMCD_INITM
  1928. 53455 VIL_BGMCD_PF%=0
  1929. 53460 VIL_BGMCD_TF%=0
  1930. 53465 VIL_BGMCD_MF%=0
  1931. 53470 VIL_BGMCD_PN%=1
  1932. 53475 DIM VIL_BGMCD_I%(5),VIL_BGMCD_S%(8)
  1933. 53490 VIL_VWM_X%(33)=VIL_W0%:VIL_VWM_Y%(33)=VIL_W1%
  1934. 53495 VIL_VWM_W%(33)=VIL_W0%+243:VIL_VWM_Z%(33)=VIL_W1%+115
  1935. 53505 RETURN
  1936. 53515 *VIL_BGMCD_M
  1937. 53600 VIL_VWM_N%=33:VIL_VWM_AT%=15:VIL_VWM_T$="BGM CD"
  1938. 53605 GOSUB*VIL_VWM_OP
  1939. 53610 IF VIL_BGMFM_PF%THEN GOSUB*VIL_BGMFM_OFF
  1940. 53615 LINE(0,0)-(243,115),PSET,%2,BF
  1941. 53620 SYMBOL(57,4),"CDDA BGM-PLAYER",1,1,4,,,3
  1942. 53625 FOR VIL_I%=26 TO 72 STEP 46
  1943. 53630 FOR VIL_J%=52 TO 152 STEP 50
  1944. 53635 LINE(VIL_J%,VIL_I%)-(VIL_J%+39,VIL_I%+37),PSET,%VIL_VWM_CB%,BF
  1945. 53640 NEXT
  1946. 53645 NEXT
  1947. 53655 LINE(6,72)-(41,109),PSET,%VIL_VWM_CB%,BF
  1948. 53660 LINE(202,72)-(237,109),PSET,%VIL_VWM_CB%,BF
  1949. 53670 VIL_E%=0
  1950. 53675 CDINF VIL_BGMCD_I%
  1951. 53680 IF VIL_E%THEN
  1952. 53685 VIL_WIN_X%=VIL_WIN_X%+2:VIL_WIN_Y%=VIL_WIN_Y%+64
  1953. 53690 VIL_WIN_W%=VIL_WIN_X%+239:VIL_WIN_Z%=VIL_WIN_Y%+31
  1954. 53695 VIL_VWM_AT%=0:VIL_VWM_T$="ERROR":VIL_VWM_N%=0
  1955. 53700 GOSUB*VIL_VWM_OP
  1956. 53705 SYMBOL(8,8),"CDがセットされていません。",1,1,7
  1957. 53710 GOSUB*VIL_INP_MVWAIT
  1958. 53715 GOSUB*VIL_VWM_CL:GOSUB*VIL_VWM_CL
  1959. 53720 ELSE
  1960. 53725 IF VIL_BGMCD_I%(1)=3 THEN VIL_BGMCD_I%(1)=2
  1961. 53730 IF VIL_BGMCD_PN%<VIL_BGMCD_I%(1)THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(1)
  1962. 53735 IF VIL_BGMCD_I%(5)<VIL_BGMCD_PN%THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(1)
  1963. 53745 SYMBOL(56,28),"MODE",1,1,7
  1964. 53750 SYMBOL(110,28),"BGM",1,1,7
  1965. 53755 SYMBOL(156,28),"TEST",1,1,7
  1966. 53760 SYMBOL(57,76),"<",2,2,7
  1967. 53765 SYMBOL(157,76),">",2,2,7
  1968. 53770 SYMBOL(8,76),FNVIL_P2S0$(VIL_BGMCD_I%(1),2),2,2,7
  1969. 53775 SYMBOL(204,76),FNVIL_P2S0$(VIL_BGMCD_I%(5),2),2,2,7
  1970. 53780 SYMBOL(106,76),FNVIL_P2S0$(VIL_BGMCD_PN%,2),2,2,7
  1971. 53785 GOSUB 54130
  1972. 53790 GOSUB 54110
  1973. 53800 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  1974. 53805 WHILE VIL_VWM_R%<>2
  1975. 53810 VIL_X%=50:VIL_Y%=24+46:VIL_W%=VIL_X%+43:VIL_Z%=VIL_Y%+41
  1976. 53815 VIL_XL%=50:VIL_YL%=46:VIL_XN%=3:VIL_YN%=2:VIL_C%=15
  1977. 53820 VIL_MSEL_BD%=4:VIL_MSEL_MN%=33:VIL_MSEL_BB%=1:VIL_MSEL_BE%=6
  1978. 53825 GOSUB*VIL_MSEL_M
  1979. 53830 IF VIL_KN%>0 THEN
  1980. 53835 ON VIL_KN%GOSUB 53985,54005,54085,53895,53915,53965
  1981. 53840 VIL_VWM_R%=0
  1982. 53845 ELSE IF VIL_KN%=-1 THEN
  1983. 53850 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2
  1984. 53855 ELSE
  1985. 53860 GOSUB*VIL_VWM_CHECK
  1986. 53865 ENDIF
  1987. 53870 WEND
  1988. 53875 ENDIF
  1989. 53880 RETURN
  1990. 53895 VIL_BGMCD_MF%=NOT VIL_BGMCD_MF%
  1991. 53900 GOSUB 54130
  1992. 53905 RETURN
  1993. 53915 VIL_BGMCD_PF%=NOT VIL_BGMCD_PF%
  1994. 53920 IF VIL_BGMCD_PF%THEN
  1995. 53925 INTERVAL 1:ON INTERVAL GOSUB*VIL_BGMCD_DRV:INTERVAL ON
  1996. 53930 GOSUB*VIL_BGMCD_DRV
  1997. 53935 ELSE
  1998. 53940 INTERVAL OFF:CD STOP
  1999. 53945 ENDIF
  2000. 53950 GOSUB 54130
  2001. 53955 RETURN
  2002. 53965 VIL_BGMCD_TF%=NOT VIL_BGMCD_TF%
  2003. 53970 GOSUB 54130
  2004. 53975 RETURN
  2005. 53985 VIL_BGMCD_PN%=VIL_BGMCD_PN%-1
  2006. 53990 IF VIL_BGMCD_PN%<VIL_BGMCD_I%(1)THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(5)
  2007. 53995 GOSUB 54105:RETURN
  2008. 54005 VIL_WIN_X%=VIL_WIN_X%+64:VIL_WIN_Y%=VIL_WIN_Y%+32
  2009. 54010 VIL_WIN_W%=VIL_WIN_X%+111:VIL_WIN_Z%=VIL_WIN_Y%+51
  2010. 54015 VIL_VWM_AT%=0:VIL_VWM_T$="INPUT":VIL_VWM_N%=0
  2011. 54020 GOSUB*VIL_VWM_OP
  2012. 54025 SYMBOL(8,8),"トラック番号",1,1,6
  2013. 54030 VIL_X%=32:VIL_Y%=28:VIL_L%=2:VIL_C%=15:VIL_CB%=VIL_VWM_CB%:VIL_A$=""
  2014. 54035 GOSUB*VIL_INP_STR
  2015. 54040 IF VIL_A$>""THEN
  2016. 54045 IF VAL(VIL_A$)<VIL_BGMCD_I%(1)OR VIL_BGMCD_I%(5)<VAL(VIL_A$)THEN
  2017. 54050 GOSUB*VIL_BEEP_B:GOTO 54035
  2018. 54055 ENDIF
  2019. 54060 ENDIF
  2020. 54065 GOSUB*VIL_VWM_CL
  2021. 54070 IF VIL_A$>""THEN VIL_BGMCD_PN%=VAL(VIL_A$):GOSUB 54105
  2022. 54075 RETURN
  2023. 54085 VIL_BGMCD_PN%=VIL_BGMCD_PN%+1
  2024. 54090 IF VIL_BGMCD_PN%>VIL_BGMCD_I%(5)THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(1)
  2025. 54095 GOSUB 54105:RETURN
  2026. 54105 IF VIL_BGMCD_TF%=-1 THEN CD PLAY VIL_BGMCD_PN%
  2027. 54110 LINE(102,72)-(141,109),PSET,%VIL_VWM_CB%,BF
  2028. 54115 SYMBOL(106,76),FNVIL_P2S0$(VIL_BGMCD_PN%,2),2,2,7
  2029. 54120 RETURN
  2030. 54130 LINE(60,46)-(83,61),PSET,%VIL_VWM_CB%,BF
  2031. 54135 SYMBOL(60,46),MID$("ONEALL",1-VIL_BGMCD_MF%*3,3),1,1,7
  2032. 54140 LINE(110,46)-(133,61),PSET,%VIL_VWM_CB%,BF
  2033. 54145 SYMBOL(110,46),MID$("OFFON",1-VIL_BGMCD_PF%*3,3),1,1,7
  2034. 54150 LINE(162,46)-(185,61),PSET,%VIL_VWM_CB%,BF
  2035. 54155 SYMBOL(162,46),MID$("OFFON",1-VIL_BGMCD_TF%*3,3),1,1,7
  2036. 54160 RETURN
  2037. 54170 *VIL_BGMCD_ON
  2038. 54210 VIL_BGMCD_PF%=-1
  2039. 54215 GOSUB*VIL_BGMCD_DRV
  2040. 54220 INTERVAL 1:ON INTERVAL GOSUB*VIL_BGMCD_DRV:INTERVAL ON
  2041. 54225 RETURN
  2042. 54235 *VIL_BGMCD_OFF
  2043. 54270 VIL_BGMCD_PF%=0:INTERVAL OFF:CD STOP
  2044. 54275 RETURN
  2045. 54285 *VIL_BGMCD_DRV
  2046. 54335 VIL_E%=0
  2047. 54340 CDSTAT VIL_BGMCD_S%
  2048. 54345 IF VIL_E%THEN
  2049. 54350 VIL_BGMCD_PF%=0:INTERVAL OFF
  2050. 54355 ELSE IF VIL_BGMCD_S%(1)=0 THEN
  2051. 54360 IF VIL_BGMCD_MF%THEN CD PLAY ELSE CD PLAY VIL_BGMCD_PN%
  2052. 54365 ENDIF
  2053. 54370 RETURN
  2054.